powershell《语音报警系统》
用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语音计算器】
[PowerShell语音计算器]带中文发音功能的计算器程序,支持鼠标和小键盘输入,支持多种数值转人民币大写,如:123.4--->壹佰贰拾叁点肆圆. 版本号 1.51 下载:http://fi ...
- Intouch/ifix语音报警系统制作(3-利用自定义过程和函数,重构先前版本)
在语音模块嵌入了半年左右的时间,经过实际使用发现,代码冗余,重复太多,维护较难,新增也不易,故而对整个框架进行整理,实现简单添加,维护容易的目的. 1.代码优化 1.1构建自定义过程 name 参数代 ...
- Intouch/ifix语音报警系统制作(2)
在我的先前一篇关于语音报警系统制作的文章中,阐述了如何通过标签组来获得@name@的详细内容,以通过这种方式来进行详细的设备故障播报.经过一段时间的试运行,发现使用标签组的方式会产生较大的耦合,(即当 ...
- 用powershell实现:“倩女幽魂姥姥”版《语音报警系统》
------[第一章 前言]------ win7,及以上版本中,是自带语音库的,系统自带一套女声中文库,一套女声英文库.用powershell调用,从而发音,制作报警系统.是一件太简单的事情,只需要 ...
- Intouch/ifix语音报警系统制作(4-自动发送邮件提醒)
在近期项目完成后,有遇到情况:类似于语音报警后,中控室人员未及时报告给我们造成了事件的危害升级,以及造成很不好的影响.针对这个情况特此添加语音报警后,自动发送邮件提醒,完善现有的报警机制. 1.函数编 ...
- powershell入门教程-v0.3版
powershell入门教程-v0.3版 来源 https://www.itsvse.com/thread-3650-1-1.html 参考 http://www.cnblogs.com/piapia ...
- Skype for Business Server 2015 企业语音部署和配置
Skype for Business Server 2015包含的企业语音功能可实现更丰富的通信和协作.例如,可以将企业语音部署配置为启用Skype for Business Server 2015客 ...
- 基于PowerShell的Lync Server管理 使用C#
这里所说的Lync Server管理,指通过C#管理Lync账号的启用,禁用,开启账户的语音功能. Lync服务器安装后,会自动创建一个用于远程管理的应用程序,通过IIS查看,其应用程序名为: Lyn ...
- PowerShell渗透--Empire(三)
会话注入 我们可以使用usemodule management/psinject模块来进程注入,获取权限 设置下Listeners和ProcID这2个参数,这里的ProcID就是之前的CMD的pid, ...
随机推荐
- SSRS 报表 递归列表
SSRS 报表 递归列表 .需要数据集合中两个必备字段 ID PID 1.添加数据集合,在图上标记的地方点击右键添加数据集合,根据需求自己编写 2.点击插入选项卡 中的 矩阵 有两种方式 一种是 矩 ...
- canvas指定的宽高写在行间和写在style里面的区别?
上代码,指定的canvas宽高都一样,线条的粗细都是5px 1.宽:400:高:300:直接写在<canvas>里的效果: 2.删除<canvas>里的宽高,宽:400:高:3 ...
- Java Web应用定制404错误页面
Http响应状态码404的含义是服务器端没有找到客户端请求的资源,定制404错误页面至少有以下两个好处: 1.向客户端隐藏服务器信息,服务器提供的默认404错误页面上一般都包含当前应用使用的是什么服务 ...
- global_step
global_step=tf.Variable(0, trainable=False) 设定trainable=False 可以防止该变量被数据流图的 GraphKeys.TRAINABLE_VARI ...
- 操作系统——第五章 输入输出(I/O)管理
这就是SDT表和DCT表
- [洛谷P2045]方格取数加强版
题目大意:有一个n*n的矩阵,每个格子有一个非负整数,规定一个人从(1,1)开始,只能往右或下走,走到(n,n)为止,并把沿途的数取走,取走后数变为0.这个人共取n次,求取得的数的最大总和. 解题思路 ...
- mysql更改密码与远程管理
set password = ': #在当前用户下更改密码 grant all privileges on *.* to root@"%" identified by " ...
- oracle基础入门(四)
一:其实oracle的语法跟sql servce 挺像的只有一些个别的差异而已 1):安装Oracle的数据库一般它的表中会自带了两站表: 是 emp(员工表) , dept(部门) 单表查询 sel ...
- 深入理解void以及void指针的含义
void的含义 void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型. void指针使用规范 ①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值. ...
- Ubuntu14.04下安装和"激活"Office2010ProPlus与Visio2010(15.11.20Updated)
本人用Ubuntu的时候全然没有打游戏的欲望,故而能够更高效的工作. 尽管说LibreOffice.WPS等等有Ubuntu版本号,可是用着还是没有微软的Office顺手,故而折腾了一下怎样安装Off ...