C# 语音合成

C# 语音合成


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         }

转自;https://www.cnblogs.com/kybs0/p/10220449.html

PS,第三方的语音合成接口有:

百度 http://ai.baidu.com/tech/speech/tts
有道 http://ai.youdao.com/product-tts.s?keyfrom=Bsearch-yyhc1
科大讯飞 https://www.xfyun.cn/services/online_tts
如果是英文朗读的话,有道的效果最好。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值