用powershell实现:“倩女幽魂姥姥”版《语音报警系统》

------【第一章 前言】------

win7,及以上版本中,是自带语音库的,系统自带一套女声中文库,一套女声英文库。
用powershell调用,从而发音,制作报警系统。是一件太简单的事情,只需要几行代码。
$sapi = New-Object -COM Sapi.SpVoice
$sapi.Speak("Hello World!")
$sapi.Speak("你好!我是计算机合成语音,能说中文了!")

Baden,powershell传教士,共同 原创文章。始于 2018-01-26 允许转载,但必须保留名字和出处,否则追究法律责任

------【第二章 正文】------

最近重温倩女幽魂,发现姥姥自带了【男女语音随机切换,说话系统】^_^。我们用powershell也很容易实现。

1 win10-16299二周年版,自带3套语音库(中文男,中文女,英文女),也可以自己安装。
不过,控制面板中默认列出2套,需要修复注册表后,才能列出“男康康”。
导入reg,修复注册表:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_ZH-CN_KangKang_11.0]
"804"="Microsoft Kangkang - Chinese (Simplified, PRC)"
"CLSID"="{179F3D56-1B0B-42B2-A962-59B7EF59FE1B}"
@="Microsoft Kangkang - Chinese (Simplified, PRC)"
"LangDataPath"=hex(2):25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,00,5c,00,53,\
00,70,00,65,00,65,00,63,00,68,00,5f,00,4f,00,6e,00,65,00,43,00,6f,00,72,00,\
65,00,5c,00,45,00,6e,00,67,00,69,00,6e,00,65,00,73,00,5c,00,54,00,54,00,53,\
00,5c,00,7a,00,68,00,2d,00,43,00,4e,00,5c,00,4d,00,53,00,54,00,54,00,53,00,\
4c,00,6f,00,63,00,7a,00,68,00,43,00,4e,00,2e,00,64,00,61,00,74,00,00,00
"VoicePath"=hex(2):25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,00,5c,00,53,00,\
70,00,65,00,65,00,63,00,68,00,5f,00,4f,00,6e,00,65,00,43,00,6f,00,72,00,65,\
00,5c,00,45,00,6e,00,67,00,69,00,6e,00,65,00,73,00,5c,00,54,00,54,00,53,00,\
5c,00,7a,00,68,00,2d,00,43,00,4e,00,5c,00,4d,00,32,00,30,00,35,00,32,00,4b,\
00,61,00,6e,00,67,00,6b,00,61,00,6e,00,67,00,00,00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_ZH-CN_KangKang_11.0\Attributes]
"Age"="Adult"
"Gender"="Male"
"Language"="804"
"Name"="Microsoft Kangkang"
"SharedPronunciation"=""
"Vendor"="Microsoft"
"Version"="11.0"
"DataVersion"="11.0.2013.1022"

2 编写脚本,把传入的字符串,以空格,英文逗号句号叹号等分割。
3 调用声音api,【每次!】说完半句话,(顺序)切换一下语音库。
这里面的核心内容,是切换语音库。不说废话,直接上脚本。

if (-not $args[0])
{
Write-Warning '用法:'
Write-Warning 'll姥姥语音.ps1 “我要把你嫁给,黑山老妖!我要你打碎金塔,在枉死城陪我我我我”'
$args = @(“我要把你嫁给,黑山老妖!我要你打碎金塔,在枉死城陪我我我我”)
} Add-Type -AssemblyName System.Speech
$sy = [System.Speech.Synthesis.SpeechSynthesizer]::new()
$sy.SelectVoiceByHints([System.Speech.Synthesis.VoiceGender]::Female)
$女 = $true
$分隔符 = "`t,。,.! " $n段文字 = $args[0].split($分隔符)
foreach ($1段文字 in $n段文字)
{
$sy.Speak($1段文字) if ($女 -eq $true)
{
$sy.SelectVoiceByHints([System.Speech.Synthesis.VoiceGender]::Male)
$女 = $false
}
else
{
$sy.SelectVoiceByHints([System.Speech.Synthesis.VoiceGender]::Female)
$女 = $true
}
}
$sy.Dispose()

win10-16299 测试通过。

用法:
ll姥姥语音.ps1    “我要把你嫁给,黑山老妖!我要你打碎金塔,在枉死城陪我我我我”
ll姥姥语音.ps1    “你姥姥我 english 也 very good”

问:linux上如何使用?
答:
linux上通过b/s,或ssh客户端等,向win远程传递事件id。
然后在win上查表id,并读对应的字符串即可。
如1001,代表“磁盘满了”。

参考资料:
https://msdn.microsoft.com/zh-cn/library/system.speech.synthesis(v=vs.110).aspx

 
分类: powershell

powershell《语音报警系统》的更多相关文章

  1. 【PowerShell语音计算器】

    [PowerShell语音计算器]带中文发音功能的计算器程序,支持鼠标和小键盘输入,支持多种数值转人民币大写,如:123.4--->壹佰贰拾叁点肆圆. 版本号 1.51 下载:http://fi ...

  2. Intouch/ifix语音报警系统制作(3-利用自定义过程和函数,重构先前版本)

    在语音模块嵌入了半年左右的时间,经过实际使用发现,代码冗余,重复太多,维护较难,新增也不易,故而对整个框架进行整理,实现简单添加,维护容易的目的. 1.代码优化 1.1构建自定义过程 name 参数代 ...

  3. Intouch/ifix语音报警系统制作(2)

    在我的先前一篇关于语音报警系统制作的文章中,阐述了如何通过标签组来获得@name@的详细内容,以通过这种方式来进行详细的设备故障播报.经过一段时间的试运行,发现使用标签组的方式会产生较大的耦合,(即当 ...

  4. 用powershell实现:“倩女幽魂姥姥”版《语音报警系统》

    ------[第一章 前言]------ win7,及以上版本中,是自带语音库的,系统自带一套女声中文库,一套女声英文库.用powershell调用,从而发音,制作报警系统.是一件太简单的事情,只需要 ...

  5. Intouch/ifix语音报警系统制作(4-自动发送邮件提醒)

    在近期项目完成后,有遇到情况:类似于语音报警后,中控室人员未及时报告给我们造成了事件的危害升级,以及造成很不好的影响.针对这个情况特此添加语音报警后,自动发送邮件提醒,完善现有的报警机制. 1.函数编 ...

  6. powershell入门教程-v0.3版

    powershell入门教程-v0.3版 来源 https://www.itsvse.com/thread-3650-1-1.html 参考 http://www.cnblogs.com/piapia ...

  7. Skype for Business Server 2015 企业语音部署和配置

    Skype for Business Server 2015包含的企业语音功能可实现更丰富的通信和协作.例如,可以将企业语音部署配置为启用Skype for Business Server 2015客 ...

  8. 基于PowerShell的Lync Server管理 使用C#

    这里所说的Lync Server管理,指通过C#管理Lync账号的启用,禁用,开启账户的语音功能. Lync服务器安装后,会自动创建一个用于远程管理的应用程序,通过IIS查看,其应用程序名为: Lyn ...

  9. PowerShell渗透--Empire(三)

    会话注入 我们可以使用usemodule management/psinject模块来进程注入,获取权限 设置下Listeners和ProcID这2个参数,这里的ProcID就是之前的CMD的pid, ...

随机推荐

  1. java9新特性-20-Javascript引擎升级:Nashorn

    1.官方Feature 236: Parser API for Nashorn 292: Implement Selected ECMAScript 6 Features in Nashorn 2.使 ...

  2. HD-ACM算法专攻系列(3)——Least Common Multiple

    题目描述: 源码: /**/ #include"iostream" using namespace std; int MinComMultiple(int n, int m) { ...

  3. JavaScript,ES5和ES6的区别

    什么是JavaScript JavaScript一种动态类型.弱类型.基于原型的客户端脚本语言,用来给HTML网页增加动态功能.(好吧,概念什么最讨厌了) 动态: 在运行时确定数据类型.变量使用之前不 ...

  4. CF GYM 100781A(菊花图+直径)

    题目大意 给出若干颗树用最少的边把它们连成一个无向连通图,同时使图的直径最小.输出最小直径. 题解 我们定义树的半径为(树的直径+1)/2.符合题意的连接方式为.所有树的“中点”连在直径最长的树的中点 ...

  5. 前端之CSS属性相关

    宽和高 width属性可以为元素设置宽度. height属性可以为元素设置高度. 块级标签才能设置宽度,内联标签的宽度由内容来决定. 字体属性 文字字体 font-family可以把多个字体名称作为一 ...

  6. 现在有一个函数A和函数B,请你实现B继承A

    现在有一个函数A和函数B,请你实现B继承A // 方式1 function B(){} function A(){} B.prototype = new A(); // 方式2 function A( ...

  7. vs2010和qt4.8.4配置

    最近项目要求在vs中开发qt程序,安装过后发现代码每天提示功能.由于本人记忆力有限,特在网上收罗了些配置方法. vs安装目录采用默认,qt安装目录:C:\Qt\4.8.4vs 在系统环境变量新建QTD ...

  8. NYOJ 541 最强的战斗力

    最强DE 战斗力 时间限制:1000 ms  |  内存限制:65535 KB 难度: 描写叙述 春秋战国时期,赵国地大物博,资源很丰富.人民安居乐业.但很多国家对它虎视眈眈.准备联合起来对赵国发起一 ...

  9. 荣耀A55高调上市仅仅为孤独求败?

        坦白说.华为近年来在手机市场上确实取得了一些成绩.比方之前P6的出现就凭借超薄的设计.突出的性价比让大家看到了国产手机的新希望.按理说.在手机市场上尝到甜头的华为应该继续坚持低价.亲民的路线, ...

  10. SQL Server数据全同步及价值分析[终结版]

    SQL Server数据全同步[终结版] 版权全部.转载请注明出处.谢谢! 经过两天的同步编写和測试.出了第一个Release版本号: 1. 本函数仅支持单向同步.即从一个主数据库想多个从数据库同步 ...