C# 语音合成
程序员文章站
2022-04-08 11:39:30
1. 引用System.Speech 2. 通过SpeechSynthesizer类朗读文本 new SpeechSynthesizer().SpeakAsync("我们都是好孩子We're good kids.") 3. Speck vs SpeckAsync函数 PlayAsync--异常播放, ......
1. 引用system.speech
2. 通过speechsynthesizer类朗读文本
new speechsynthesizer().speakasync("我们都是好孩子we're good kids.")
3. speck vs speckasync函数
- playasync--异常播放,可以将需要朗读的文本进行排队。如果不需要,可以按如下取消当前的播放操作。
- speak--同步播放,会卡ui线程。如果在朗读时,不影响界面操作,则不应使用此函数
1 private speechsynthesizer speechsyn=new speechsynthesizer(); 2 /// <summary> 3 /// 异步播放 4 /// </summary> 5 private void playasync() 6 { 7 var currentspokenprompt = speechsyn.getcurrentlyspokenprompt(); 8 if (currentspokenprompt != null) 9 { 10 speechsyn.speakasynccancel(currentspokenprompt); 11 } 12 speechsyn.speakasync(richtextbox1.text); 13 } 14 /// <summary> 15 /// 同步播放 16 /// 注:卡ui 17 /// </summary> 18 private void play() 19 { 20 using (speechsynthesizer speechsyn = new speechsynthesizer()) 21 { 22 speechsyn.speak(richtextbox1.text); 23 } 24 }
4. 设置朗读角色
1 var speechsynthesizer = new speechsynthesizer(); 2 var voices= speechsynthesizer.getinstalledvoices(cultureinfo.currentculture).select(x => x.voiceinfo.name).tolist(); 3 speechsynthesizer.selectvoice(voices[0]); 4 speechsynthesizer.speakasync("我们都是好孩子we're good kids.");
5. 其它
- rate -- 语速设置,默认为0
- volume -- 音量设置
6. 导出音频文件
可以将文本语音合成后,导出成一个wav、mp3等音频文件。
1 private void exportaudiofile() 2 { 3 using (speechsynthesizer speechsyn = new speechsynthesizer()) 4 { 5 speechsyn.volume = 50; 6 speechsyn.rate = 0; 7 8 var filepath = environment.getfolderpath(environment.specialfolder.desktop) + $"\\{richtextbox1.text}.mp3"; 9 if (file.exists(filepath)) 10 { 11 file.delete(filepath); 12 } 13 14 speechsyn.setoutputtowavefile(filepath); 15 speechsyn.speak(richtextbox1.text); 16 speechsyn.setoutputtodefaultaudiodevice(); 17 18 messagebox.show($"保存录音文件成功,保存路径:{filepath}"); 19 } 20 }
demo下载
上一篇: C++ 获取PE文件自校验值的代码
下一篇: 9年资历深漂一族感想史