C# 语音合成

Posted lonelyxmas

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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         }

Demo下载

 

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

如果是英文朗读的话,有道的效果最好。

以上是关于C# 语音合成的主要内容,如果未能解决你的问题,请参考以下文章

C# 重复文本到语音合成

基于C# 百度AI和科大汛飞语音合成SDK

20160209.CCPP体系详解(0019天)

20.5 语音合成(百度2016年2月29日发布的tts引擎)

重磅!一行代码轻松搞定中英文语音识别与语音合成|代码开源!

重磅!一行代码轻松搞定中英文语音识别与语音合成|代码开源!