1. 程式人生 > >用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,修復登錄檔:( 同樣 適用於  win10 17663.1 三週年版 rs5 )

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實現幽魂姥姥語音報警系統

------【第一章 前言】------ win7,及以上版本中,是自帶語音庫的,系統自帶一套女聲中文庫,一套女聲英文庫。用powershell呼叫,從而發音,製作報警系統。是一件太簡單的事情,只需要幾行程式碼。$sapi = New-Object -COM Sapi.SpVoice$sapi.Speak(

幽魂妖魔道】聊齋妖魔道之幽魂單機一鍵端原始碼分享

測試, 測試 架設前請關閉防毒軟體、衛士、防火牆,防止誤刪重要程式檔案或攔截造成架設失敗。 第1步: 開啟下載好的檔案qnyh.exe,直接點解壓就可以了,修改解壓路徑會造成架設失敗。全部解壓好視窗會自己關閉,中途不要進行其他操作。 倩女幽魂啟動器可以放任意位置,建議放在遊戲資料夾內

JS函式實現輸入年,月,日,獲取這個日期是這一年的第多少天

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body>

先讀懂CapsNet架構然後TensorFlow實現全面解析Hinton的提出的Capsule

上週 Geoffrey Hinton 等人公開了那篇備受關注的 NIPS 論文,而後很多研究者與開發者都閱讀了該論文並作出了一定的程式碼實現。機器之心在本文中將詳細解釋該論文提出的結構與過程,並藉助 GitHub 上熱烈討論的專案完成了 CapsNet 的 TensorFlow 實現,並提供了主體架構的程

C++實現輸入任意位數的整數並倒序輸出

程式碼如下:#include<iostream> #include<stdlib.h> #include<string> using namespace std; int main() { string num; cin&

小練習socket實現Linux和Windows之間的通信

ren argc 漏洞 markdown tex sockets acc sas -m 在日常生活中,絕大部分人使用的機器通常是windows系統,可是對於研發人員,開發、編譯等工作往往是建立在linux機器上。其實。在服務器方面,Linux、UNIX和

C語言實現將三個數按從大到小輸出。

temp clas 實現 ima 編程 程序 c語言實現 從大到小 code 這個題目用編程來實現非常簡單,由於我在上一篇博客中已經介紹過使用“冒泡排序”的方法。 所以我在這裏直接給出使用“冒泡排序”寫出的代碼: #include<stdio.h> int m

C語言實現將數組A中的內容和數組B中的內容進行交換(數組一樣大)。

image pri 之前 es2017 sys 變量 ret 只需要 題目 之前我們已經完成了對兩個變量內容進行交換的程序,這兩道題目大同小異,不過是將兩數變成了兩數組。 可能我們會想:我們是不是需要第三個數組作為中間變量進行交換操作? 答案是no,我們只需要通過一個循環體

使用application作用域實現戶重復登錄時,擠掉原來的

ont 必須 用戶名 使用 執行 gets quest return http 使用application作用域實現:當用戶重復登錄時,擠掉原來的用戶 一、實現思想 1.application(ServletContext)是保存在服務器端的作用域,我們在applicati

java算法面試題排序都有哪幾種方法?請列舉。JAVA實現一個快速排序。選擇冒泡快速集合至少4種方法排序

算法 err div println rda print 算法面試 ++ 快速排序 package com.swift; import java.util.ArrayList; import java.util.Collections; import java.util

案例python實現翻譯小程序

luchangshan5200案例:翻譯小程序 #實現一個翻譯小程序 #1 可以查詢單詞 #2 可以自定義補充單詞解釋 #3 可以刪除某個單詞 print(‘歡迎來到大寶dayday見小詞典‘.center(30,‘-‘)) orig_dict = {‘中文‘:‘chinese‘,‘代碼‘:‘code‘,‘

BootNettyRpc Netty 實現的 RPC 框架

ofo 文件配置 RR 實現 端口 監控 ble tin cto 什麽是 BootNettyRpc?BootNettyRpc 是一個采用Netty實現的Rpc框架,適用於Spring Boot項目,支持Spring Cloud。 目前支持的版本為Spring Boot 1.

DLL注入CreateRemoteThread實現DLL注入

實驗環境:WINXP VS2010 功能:注入到notepad.exe程式,並從網上下一個檔案 實驗程式: (一)myhack.dll,即要注入的dll程式 #include "windows.h" #include "tchar.h" #pragma comment(lib,"url

類方法實現python實現一個簡單的單詞本,添加/查找/刪除單詞。

end code div keys style 成功 move print utf 1.實現一個簡單的單詞本,功能: ①添加單詞,當所添加的單詞已存在時,讓用戶知道 ②查找單詞,當查找的單詞不存在時,讓用戶知道 ③刪除單詞,當刪除的單詞不存在時,讓用戶知道 以上

基於硬體的C(C++)語言程式設計教程12函式實現2數之和

本系列文章希望探討以硬體為平臺講述C(C++)知識的一個新的途徑,改變目前大多數C語言教程僅注重C語言本身的語法規則,而脫離其應用環境的現狀。希望讀者通過本教程的學習,能夠立刻學以致用,真正將所學知識應用到專案實踐中。 開發環境:Atmel Studio 7.0 硬體平臺:Microch

練習三十二python實現:按相反的順序輸出列表的每一位值

用python實現:按相反的順序輸出列表的每一位值 1. 使用list[::-1] 1 list1 = ["one","two","three","four"] 2 for i in list1[::-1]:#list[::-1]結果為列表的反向 3 print(i) 2. 使用l

機器學習實戰nodejs實現人臉識別

機器學習實戰:用nodejs實現人臉識別   在本文中,我將向你展示如何使用face-recognition.js執行可靠的人臉檢測和識別 。 我曾經試圖找一個能夠精確識別人臉的Node.js庫,但是

晚上,有四個人過河,分別需要1、2、5、10分鐘。只有一把手電筒,過河的必要條件是有手電筒。最多可以兩個人同時過河,但必須以兩人中較慢的那個人的速度過去。問所有人都過河,至少需幾分鐘。java實現

找實習工作遇到的筆試題: 解題思路:用兩個集合分別代表河的兩岸(list2表示對岸),利用雙重for迴圈模擬A,B,C,D分別組合過河,如:A,B先過河,則,將A,B都新增到list2集合中去。如果A的時間大於B,則B再次過河送手電筒,再一次將B新增到集合中去。反之同理。 總之,時間短的過河

實戰Python實現隨機森林

因為有Scikit-Learn這樣的庫,現在用Python實現任何機器學習演算法都非常容易。實際上,我們現在不需要任何潛在的知識來了解模型如何工作。雖然不需要了解所有細節,但瞭解模型如何訓練和預測對工作仍有幫助。比如:如果效能不如預期,我們可以診斷模型或當我們想要說服其他人使用我們的模型時,我們可以向他們解

######業務儘可能sql實現(縮短後臺響應時間)最近都在優化之前的程式碼發現每個模組的index頁都需要優化(很多都在迴圈裡操作資料庫菜!初級!)

  ###最近都在優化之前的程式碼: 發現每個模組的index頁都需要優化(很多都再迴圈裡操作資料庫:菜!初級!或者說趕專案沒想優化這回事吧) ===》解耦合前提下,能用一條SQL解決的,多測試寫SQL。可以減少很多程式碼。 希望我在疲憊,腦子不好使時候也能堅持吧。(注意休