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     SetVoice\GetVoice    SetRate|SetRate  SetVolume\GetVolume   这些方法根据他的意思就知道 是关于暂停 继续   设置声音   设置读取速度  声音大小的   更多的对象 方法  请参考他的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:\test.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/

转载于:https://www.cnblogs.com/duwamish/p/9705441.html

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用前,必须保证smartread7.dll文件在与程序相同的目录下 注意点 由于从2.1版本中加入了初始化认证函数, 不同的注册用户的smartread7.dll文件是不相同的, 如果你将smartread7.dll文件复制到系统文件夹下, 如果其他注册用户也将其注册的smartread7.dll文件复制到系统文件夹下, 就会覆盖掉你的注册smartread7.dll文件, 引起你的程序调用会出现未注册信息. 所以如果你调用初始化认证函数, 最好将smartread7.dll文件复制到你的程序相同的文件夹下. SmartRead_Initial 从语音朗读开发包2.4开始,不支持 SmartRead_Initial函数 SmartRead_InitialAuth 用于初始化语音并认证功能,必须在最初调用,进行认证 SmartRead_Close 用于关闭语音功能,在程序退出前调用,释放资源 SmartRead_Speak 朗读函数,分别有阻塞调用,非阻塞调用,并且在朗读每一句可以定义所朗读的每一句的 语音(中文或者英文),语速,音量,也可以采用缺省的参数(详见程例) SmartRead_Stop 停止朗读函数 SmartRead_SetDialog 用于打开语音设置对话框,改变语音,音量,语速等,并且可以连接到自定义的语音库下载站点 SmartRead_Version 显示开发包版本信息 SmartRead_SpeakToWave 朗读文本到WAVE文件,可以自己设置所输出的WAVE文件,并且朗读时可以设置语音,语速,音量和格式 SmartRead_GetLocationInfo 获得当前朗读到的位置,以百分数表示 SmartRead_SetVolume 在朗读中改变音量 SmartRead_SetSpeed 在朗读中改变语速 SmartRead_PauseORContinue 在朗读中实现暂停/继续功能 SmartRead_GetVoiceDeviceNum 获得声卡数目信息 SmartRead_GetVolume 在朗读中获得音量 SmartRead_GetSpeed 在朗读中获得语速 SmartRead_HideMessageBox 隐藏信息提示框函数 SmartRead_SetMode 设置播放模式函数 SmartRead_SetParameter 设置参数 SmartRead_QueueNext 队列朗读播放下一条 SmartRead_QueueStatistics 统计目前队列已经朗读个数和总的个数 SmartRead_GetErrCode 获得错误代码 SmartRead_GetErrMsg 获得错误信息,英文表示
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值