zoukankan      html  css  js  c++  java
  • C# 语音合成

    微软MS的文本转语音

    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下载

    第三方的语音合成接口

    如果是英文朗读的话,有道的效果最好。可以下载Demo体验下

  • 相关阅读:
    Linux CPU监控指标
    Elasticsearch强大的聚合功能Facet
    业务逻辑层的设计
    数据结构中的棧在C#中的实现
    使用WPF教你一步一步实现连连看
    ASP.NET之旅—再一次与ASP谋面
    每日一帖示例程序(使用TWebBrowser基于HTML做)
    在程序异常中记录堆栈信息(使用ExWatcher)
    获取TBitMap图像缓冲区,提高图像处理速度
    delphi实现穿XP防火墙
  • 原文地址:https://www.cnblogs.com/kybs0/p/10220449.html
Copyright © 2011-2022 走看看