首页 > 其他分享 >Microsoft Speech SDK 5.1 微软的文字转语音TTS

Microsoft Speech SDK 5.1 微软的文字转语音TTS

时间:2023-07-28 18:12:24浏览次数:51  
标签:5.1 TTS SpFileStream Speech 语音 Voice 朗读 Microsoft Speak

下载安装 Speech SDK 5.1

1. Windows Speech SDK 5.1版本支持xp系统和server 2003系统,需要下载安装。XP系统默认只带了个Microsoft Sam英文男声语音库,想要中文引擎就需要安装Windows Speech SDK 5.1。下载地址:http://www.microsoft.com/download/en/details.aspx?id=10121

2. Windows Speech SDK 5.3版本支持Vista系统和Server 2008系统,已经集成到系统里。Vista和Server 2003默认带Microsoft lili中文女声语音库和Microsoft Anna英文女声语音库。

3. Windows Speech SDK 5.4版本支持Windows7系统,也已经集成到系统里,不需要下载安装。Win7系统同样带了Microsoft lili中文女声语音库和Microsoft Anna英文女声语音库。Microsoft lili支持中英文混读。

安装好后在安装目录下有各种编程语言的Demo和帮助文档

C:\Program Files (x86)\Microsoft Speech SDK 5.1

方法:

  GetInstalledVoices():获取当前系统中安装的语音播放人,返回一个VoiceInfo对象集合,具体的对象有在控制面板中,语音项可以查看。

                                           Xp默认是Microsoft Sam。

  SelectVoice(string):选择当前朗读的人员,参数是朗读者名称,如:Microsoft Sam

  SpeakAsync(string):开始进行异步朗读,参数是朗读的文本。

  Speak(string):开始进行朗读,参数是朗读的文本。这里我没有弄懂SpeakAsync和Speak的区别,我试了下效果都一样。

  Pause():暂停正在播放朗读。

  Resume():继续播放暂停的朗读。

  SetOutputToWaveFile(string):保存语音文件,调用该方法后需要调用Speak方法。参数是保存文件的路径。如:d:/124.wav或d:/123.MP3

  SetOutputToNull():保存文件结束语句,必须调用该语句,否则生产的语音文件无法播放。

属性:

  Rate:播放语速,-10~10

  Volume:音量调节:0~100

  Voice:正在使用某个人员播放,返回:VoiceInfo对象。

事件:

  SpeakCompleted:朗读完成事件,朗读完成后会触发该时间。可以在该事件中处理播放完成后的流程。

  SpeakStarted:朗读开始事件。

  SpeakProgress:朗读过程事件,可以继续一些进度条处理。

C#示例

示例一 直接播放  可调节音量 和语速 

项目引用  Interop.SpeechLib.dll

using SpeechLib;
private void btnSpeak_Click(object sender, EventArgs e)
{
            SpeechVoiceSpeakFlags flag = SpeechVoiceSpeakFlags.SVSFlagsAsync;
            SpVoice voice = new SpVoice();
            voice.Rate = 1;//语速
            voice.Volume = 100;//音量
            voice.Voice = voice.GetVoices(string.Empty, string.Empty).Item(0);//Item(0)中文、Item(3)英文
            voice.Speak("这里是您要播报的语音内容,今天天气晴转多云", flag);

}

示例二  直接保存到wav文件 并转为 8KHZ   16比特  语音格式

private void btnSave_Click(object sender, EventArgs e)
{
            try
            {
                SpeechVoiceSpeakFlags SpFlags = SpeechVoiceSpeakFlags.SVSFlagsAsync;
                SpVoice Voice = new SpVoice();

                string strFileName = "TTS/" + txtSpeakText.Text+".wav";//工程目录下以播放的内容为文件名

                SpeechStreamFileMode SpFileMode = SpeechStreamFileMode.SSFMCreateForWrite;

                SpFileStream SpFileStream = new SpFileStream();

                SpFileStream.Format.Type = SpeechAudioFormatType.SAFT8kHz16BitMono; //8KHZ 16比特  语音格式
                //SpFileStream.Format.Type = SpeechAudioFormatType.SAFT11kHz16BitMono;
                //SpFileStream.Open("c:\\tts.wav", SpeechStreamFileMode.SSFMCreateForWrite, false);

                SpFileStream.Open(strFileName, SpFileMode, false);

                Voice.AudioOutputStream = SpFileStream;
                Voice.Speak(txtSpeakText.Text, SpFlags);
                Voice.WaitUntilDone(Timeout.Infinite);//Timeout.Infinite 线程超时常量
                
                SpFileStream.Close();//关闭

            }
            catch (Exception error)
            {
                MessageBox.Show("Speak error", "SimpleTTS " + error.Message, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
}

示例二  通过打开对话框 保存到 wav文件 

private void btnSaveDialog_Click(object sender, EventArgs e)
{
            try
            {
                SpeechVoiceSpeakFlags SpFlags = SpeechVoiceSpeakFlags.SVSFlagsAsync;
                SpVoice Voice = new SpVoice();

                SaveFileDialog sfd = new SaveFileDialog();

                sfd.Filter = "All files (*.*)|*.*|wav files (*.wav)|*.wav";
                sfd.Title = "Save to a wave file";
                sfd.FilterIndex = 2;
                sfd.RestoreDirectory = true;

                if (sfd.ShowDialog() == DialogResult.OK)
                {

                    SpeechStreamFileMode SpFileMode = SpeechStreamFileMode.SSFMCreateForWrite;

                    SpFileStream SpFileStream = new SpFileStream();
                    SpFileStream.Open(sfd.FileName, SpFileMode, false);

                    Voice.AudioOutputStream = SpFileStream;
                    Voice.Speak(txtSpeakText.Text, SpFlags);
                    Voice.WaitUntilDone(Timeout.Infinite);

                    SpFileStream.Close();

                }

            }
            catch (Exception error)
            {
                MessageBox.Show("Speak error", "SimpleTTS", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
}

 

标签:5.1,TTS,SpFileStream,Speech,语音,Voice,朗读,Microsoft,Speak
From: https://www.cnblogs.com/hailexuexi/p/17588586.html

相关文章

  • 论文翻译(扩散模型来了):Diffusion-Based Mel-Spectrogram Enhancement for Personalized
     利用发现的数据来创建合成声音是具有挑战性的,因为现实世界的录音通常包含各种类型的音频退化。解决这个问题的一种方法是使用增强模型对语音进行预增强,然后使用增强后的数据进行文本转语音(TTS)模型训练。本论文研究了使用条件扩散模型进行广义语音增强,旨在同时解决多种类型的音......
  • HS6621CXC低功耗蓝牙5.1支持nordic2.4G私有协议SOC芯片
    2.4Ghz的soc蓝牙5.1芯片HS6621CC语音遥控/智能门锁M4F内核兼容NORDIC的2.4G私有协议超低功耗性能特点射频收发器-95.5dBm灵敏度@1Mbps93dBm灵敏度@2Mbps98dBm灵敏度@500Kbps-101.5dBm灵敏度@125KbpsTX功率-20~+9dBmCPUARMCortexTM-M4F,最大64MHZ串行线......
  • 5.1 层和块
    为了实现更加复杂的神经网络,我们引入块的概念。块可以描述单个层、由多个层组成的组件或整个网络本身。使用块进行抽象的一个好处是可以将一些块组合成更大的组件,这一过程通常是递归的,如图所示。通过定义代码来按需生成任意复杂度的块,我们可以通过简洁的代码实现复杂的神经网络......
  • PR语音转字幕转换插件Speech to Text for Premiere Pro
    在SpeechtoTextforPremierePro(PR语音转字幕转换插件中您可以使用以下各种格式转换:中文(PL/PRC)、英文、日语、韩语、意大利语、葡萄牙语、波兰语、法语、意大利语、荷兰语、英语、西班牙语等。如果您对中文、日语、韩语、葡萄牙语、法语、荷兰语等语言感兴趣,可以在这里找到......
  • 动态规划5.1-概述
    一、概念以下内容摘自代码源两个要求最优子结构:大问题的解可以从小问题的解推出,在问题的拆解过程中不能无限递归无后效性:未来与过去无关,一旦得到小问题的解,得到该解的过程不影响大问题的求解两个元素状态:求解过程进行到了哪一步,可以理解为一个子问题转移:从一个状态(......
  • Uncaught AssertionError: Assertion failed. See https://openlayers.org/en/v6.15.1
    openlayers点击具体错误Cannotfitemptyextentprovidedas geometry.这个错误信息意味着OpenLayers在尝试使用一个空的范围作为几何图形时出现了问题。范围(extent)表示几何图形覆盖的边界框或区域,它由四个坐标值组成:最小经度、最小纬度、最大经度和最大纬度。当范围没有......
  • VTK 9.2 Qt 5.14 安装及错误处理
    安装注意:编译release和debug,通过切换配置为release和debug,文件都是在cmake的CMAKE_INSTALL_PREFIX指定的文件夹,需要编译完一种后,把这个文件夹改名(比如debug配置,则改名为debug),不然会覆盖。在Qt项目中,出现错误:“无法解析的外部符号__imp_gl***”,“项目-属性-链接器-输入”添加:OpenG......
  • VTK9.1.0在Windows10+VS2019+Qt 5.15.2环境下编译安装以及VTK应用于QT
    下载VTK安装包在VTK官网Download|VTK中下载VTK9.1.0待编译源码,解压后在路径Documentation/dev/bulid.md中可以看到官方提供的Prerequisites以及简易教程编译环境安装按照官方提供的Prerequisites,安装以下环境:CMakeVersion3.12ornewer,however,thelatestversionisal......
  • 5.1 存储技术
    随机访问存储器随机访问存储器分为静态的与动态的。静态SRAM将每个位存储在一个双稳态的存储器单元里,每个单元用一个六晶体管电路来实现。这个电路有这样一个属性,它可以无限期地保持在两个不同的电压配置(configuration)或状态(state)之一。其他任何状态都是不稳定的——从不稳......
  • graylog5.1安装(Centos7)
    官网安装地址:https://go2docs.graylog.org/5-1/downloading_and_installing_graylog/red_hat_installation.htm?tocpath=Downloading%20and%20Installing%20Graylog%7CInstalling%20Graylog%7C_____6一、需要安装的组件OpenJDK17(5.0以上版本的graylog已内置,无需安装)OpenSe......