C# ms speech文字轉語音例子


最近突發奇想 想玩玩  文字轉語音的東東   谷歌了一下 發現微軟有一個TTS 的SDK   查了查相關資料  發現 還真不錯  然后就開始玩玩Microsoft Speech SDK的 DEMO了    

現在網上最新版好像是Microsoft Speech SDK Version 5.1    先下載下來

下載地址是  http://www.52z.com/soft/22068.html

要先安裝第一個SDK 然后安裝語言包    只有安裝了語言包   語言包是用來支持中文翻讀的

然后開始我們的C#文字轉語音小程序  

1、打開VS  新建一個窗體項目

2、添加引用:在COM選項卡里面的Microsoft Speech  object  library引用 

並在代碼區添加引用

using SpeechLib;  
using System.Threading;//這個引用是用來保存語音文件用的線程類

 3、添加一個文本框 兩個按鈕 

4、在一個按鈕下輸入如下代碼

 SpeechVoiceSpeakFlags flag = SpeechVoiceSpeakFlags.SVSFlagsAsync;
            SpVoice voice = new SpVoice();
            voice.Voice = voice.GetVoices(string.Empty, string.Empty).Item(3);
            //Item(0)單詞男聲Sam
            //Item(1)單詞男聲Mike
            //Item(2)單詞女聲Mary
            //Item(3)中文發音,如果是英文,就依單詞字母一個一個發音
            voice.Speak(textBox1.Text, flag);

代碼解釋  :其中最重要的是SPVoice類   他是這個DEMO的核心 ;然后就是Item(3)選項  下面注釋已經很清楚了 說明是什么意思。后面還有一個SPEAK方法  不用我說也知道是什么意思吧 !當然關於SpVoice對象還有很多方法  查了一下Microsoft Speech的API   還有pause\ Resume     SetVoice\GetVoice    SetRate|SetRate  SetVolume\GetVolume   這些方法根據他的意思就知道 是關於暫停 繼續   設置聲音   設置讀取速度  聲音大小的   更多的對象 方法  請參考他的API 

5、在另一個按鈕輸入如下代碼 

  SpeechVoiceSpeakFlags flag = SpeechVoiceSpeakFlags.SVSFlagsAsync;
            SpVoice voice = new SpVoice();
            voice.Voice = voice.GetVoices(string.Empty, string.Empty).Item(3);


            SpeechStreamFileMode SpFileMode = SpeechStreamFileMode.SSFMCreateForWrite;

            SpFileStream SpFileStream = new SpFileStream();
            SpFileStream.Open(@"C:\test.wav", SpFileMode, false);
            voice.AudioOutputStream = SpFileStream;//設定voice的輸出為Stream
            voice.Speak(textBox1.Text.Trim(), flag);
            voice.WaitUntilDone(Timeout.Infinite);//Using System.Threading;

            SpFileStream.Close();

其實這段代碼跟前一個代碼差不多 只不過是通過流把聲音保存為語音文件而已   

簡單吧   現在就可以好好玩玩你的這個DEMO了    你還可以添加很多功能的 可以做成SDK里面的幾個例子一樣的程序  !

本文DEMO下載地址http://www.ubosm.com/Soft/ShowSoft.asp?SoftID=35

 

 

 

System.Speech 命名空間包含支持語音識別的類型,你可以從Visual Studio很方便的添加相關組件的引用。

System.Speech相關介紹:https://msdn.microsoft.com/zh-cn/library/gg145021(v=vs.110).aspx

System.Speech.Synthesis 命名空間包含用於初始化和配置語音合成引擎,用於創建提示,用於生成語音,用於響應事件,以及修改語音特征的類。下面通過SpeechSynthesizer類來朗讀一段文本。

    string textToSpeak="你好,HelloWorld!"; SpeechSynthesizer synthes=new SpeechSynthesizer(); synthes.Speak(textToSpeak);//同步 synthes.SpeakAsync(textToSpeak);//異步

System.Speech.Synthesis相關介紹:https://msdn.microsoft.com/zh-cn/library/system.speech.synthesis(v=vs.110).aspx

對於語音的控制音量大小、音色,將語音轉成文本、已將相關事件,都可以從System.Speech.Synthesis命名空間下找到相關的類型進行處理。

TTS入門DEMO:
https://code.msdn.microsoft.com/windowsdesktop/Text-to-Speech-Converter-0ed77dd5
http://www.wpf-tutorial.com/audio-video/speech-synthesis-making-wpf-talk/

如果使用的系統沒有微軟的語音包,或者不支持中文語音,可以從官網下載更新,Microsoft Speech SDK 5.1下載地址:https://www.microsoft.com/en-us/download/details.aspx?id=10121

(題外話)一些常用的文本轉語音平台:
https://developer.baidu.com/vcast
http://tools.bugscaner.com/tts/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM