zoukankan      html  css  js  c++  java
  • C# ms speech文字转语音例子

    最近突发奇想 想玩玩  文字转语音的东东   谷歌了一下 发现微软有一个TTS 的SDK   查了查相关资料  发现 还真不错  然后就开始玩玩Microsoft Speech SDK的 DEMO了    

    现在网上最新版好像是Microsoft Speech SDK Version 5.1    先下载下来

    下载地址是  http://www.52z.com/soft/22068.html

    要先安装第一个SDK 然后安装语言包    只有安装了语言包   语言包是用来支持中文翻读的

    然后开始我们的C#文字转语音小程序  

    1、打开VS  新建一个窗体项目

    2、添加引用:在COM选项卡里面的Microsoft Speech  object  library引用 

    并在代码区添加引用

    using SpeechLib;  
    using System.Threading;//这个引用是用来保存语音文件用的线程类

     3、添加一个文本框 两个按钮 

    4、在一个按钮下输入如下代码

     SpeechVoiceSpeakFlags flag = SpeechVoiceSpeakFlags.SVSFlagsAsync;
                SpVoice voice = new SpVoice();
                voice.Voice = voice.GetVoices(string.Empty, string.Empty).Item(3);
                //Item(0)单词男声Sam
                //Item(1)单词男声Mike
                //Item(2)单词女声Mary
                //Item(3)中文发音,如果是英文,就依单词字母一个一个发音
                voice.Speak(textBox1.Text, flag);

    代码解释  :其中最重要的是SPVoice类   他是这个DEMO的核心 ;然后就是Item(3)选项  下面注释已经很清楚了 说明是什么意思。后面还有一个SPEAK方法  不用我说也知道是什么意思吧 !当然关于SpVoice对象还有很多方法  查了一下Microsoft Speech的API   还有pause Resume     SetVoiceGetVoice    SetRate|SetRate  SetVolumeGetVolume   这些方法根据他的意思就知道 是关于暂停 继续   设置声音   设置读取速度  声音大小的   更多的对象 方法  请参考他的API 

    5、在另一个按钮输入如下代码 

      SpeechVoiceSpeakFlags flag = SpeechVoiceSpeakFlags.SVSFlagsAsync;
                SpVoice voice = new SpVoice();
                voice.Voice = voice.GetVoices(string.Empty, string.Empty).Item(3);


                SpeechStreamFileMode SpFileMode = SpeechStreamFileMode.SSFMCreateForWrite;

                SpFileStream SpFileStream = new SpFileStream();
                SpFileStream.Open(@"C: est.wav", SpFileMode, false);
                voice.AudioOutputStream = SpFileStream;//设定voice的输出为Stream
                voice.Speak(textBox1.Text.Trim(), flag);
                voice.WaitUntilDone(Timeout.Infinite);//Using System.Threading;

                SpFileStream.Close();

    其实这段代码跟前一个代码差不多 只不过是通过流把声音保存为语音文件而已   

    简单吧   现在就可以好好玩玩你的这个DEMO了    你还可以添加很多功能的 可以做成SDK里面的几个例子一样的程序  !

    本文DEMO下载地址http://www.ubosm.com/Soft/ShowSoft.asp?SoftID=35

    System.Speech 命名空间包含支持语音识别的类型,你可以从Visual Studio很方便的添加相关组件的引用。

    System.Speech相关介绍:https://msdn.microsoft.com/zh-cn/library/gg145021(v=vs.110).aspx

    System.Speech.Synthesis 命名空间包含用于初始化和配置语音合成引擎,用于创建提示,用于生成语音,用于响应事件,以及修改语音特征的类。下面通过SpeechSynthesizer类来朗读一段文本。

        string textToSpeak="你好,HelloWorld!";
        SpeechSynthesizer synthes=new SpeechSynthesizer();
        synthes.Speak(textToSpeak);//同步
        synthes.SpeakAsync(textToSpeak);//异步

    System.Speech.Synthesis相关介绍:https://msdn.microsoft.com/zh-cn/library/system.speech.synthesis(v=vs.110).aspx

    对于语音的控制音量大小、音色,将语音转成文本、已将相关事件,都可以从System.Speech.Synthesis命名空间下找到相关的类型进行处理。

    TTS入门DEMO:
    https://code.msdn.microsoft.com/windowsdesktop/Text-to-Speech-Converter-0ed77dd5
    http://www.wpf-tutorial.com/audio-video/speech-synthesis-making-wpf-talk/

    如果使用的系统没有微软的语音包,或者不支持中文语音,可以从官网下载更新,Microsoft Speech SDK 5.1下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=10121

    (题外话)一些常用的文本转语音平台:
    https://developer.baidu.com/vcast
    http://tools.bugscaner.com/tts/

  • 相关阅读:
    javascript小测试
    js设计模式--策略模式
    js设计模式--迭代器模式
    面试题自我解析
    js设计模式--工厂模式
    js设计模式--单体模式
    Python学习一:Python简介
    Angularjs学习笔记《一》
    实现字体最小,不是默认的12px,可以在视觉上最小达到6px
    css3 transform之后,图片的清晰度下降解决方式
  • 原文地址:https://www.cnblogs.com/duwamish/p/9705441.html
Copyright © 2011-2022 走看看