Pentium.Labs

System全家桶:https://zhuanlan.zhihu.com/c_1238468913098731520

导航

用TTS实现文本转语音

最近被toefl单词虐成狗::>_<::  

想做一个可以自动把单词转成语音的软件,这样就可以在路上戴耳机边走边听啦~

 

用微软的TTS语音库可以很容易地实现。早期的TTS要想实现中英文混合朗读还很麻烦,然而Win10里自带的新版SDK已经解决了这个问题。可以自动识别出中文和英文。这点超赞~

注意:如果用的是英文版系统,需要先安装中文Speech Library

然后在控制面板--语音识别选项里可以看到这个新的语音库:

 

 

进入VS,新建一个C#工程,然后在Solution Explorer----References上右键,Add References,添加如下选项:

 

实现文本转语音有两种Library,System.Speech或者SpeechLib。这里我用的SpeechLib

基本的朗读功能实现如下:

SpVoice voice = new SpVoice();            
voice.Rate = 0; //语速,[-10,10]
voice.Volume = 100; //音量,[0,100]
voice.Voice = voice.GetVoices().Item(2); //语音库
voice.Speak("中文speech");

 

但是为了在手机上播放,仅仅让它读出来还不够....最好能保存到音频文件

可以用SpeechLib自带的类:  SpeechLib.SpFileStream sfs=new SpeechLib.SpFileStream();

 

还要注意一个问题:

NT系统默认是Unicode编码,而TXT文件默认是ANSI编码。这样会导致txt文件中的中文识别不出来。解决方法是在StreamReader中自定义编码

StreamReader reader = new StreamReader(FileName, System.Text.Encoding.Default)

 

 

自制了一个小Demo:

单击Select File,通过打开对话框打开txt文件

单击Read,将文本自动转语音,并保存到D:\233.mp3文件    【懒得写保存对话框啦

 

Download

 

posted on 2015-09-23 12:20  Pentium.Labs  阅读(3770)  评论(0编辑  收藏  举报



Pentium.Lab Since 1998