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/
C# ms speech文字转语音例子的更多相关文章
- speech sdk 文字转语音
1.下载SDK包 https://www.microsoft.com/en-us/download/details.aspx?id=10121 2.直接上代码 // SpeechRecognition ...
- C# 语音识别(文字to语音、语音to文字)
最近打算研究一下语音识别,但是发现网上很少有C#的完整代码,就把自己的学习心得放上来,和大家分享一下. 下载API: 1)SpeechSDK51.exe (67.0 ...
- Android实例-调用GOOGLE的TTS实现文字转语音(XE7+小米2)(无图)
注意:在手机上必须选安装文字转语音引擎“google Text To Speech”地址:http://www.shouji56.com/soft/GoogleWenZiZhuanYuYinYinQi ...
- 简单C#文字转语音
跟着微软走妥妥的,C#文字转语音有很多参数我就不说了,毕竟我也是初学者.跟大家分享最简单的方法,要好的效果得自己琢磨喽: 先添加引用System.Speech程序集: using System; us ...
- Android技术分享-文字转语音并朗读
Android技术分享-文字转语音并朗读 最近在做一个项目,其中有一个功能是需要将文本转换成语音并播放出来.下面我将我的做法分享一下. 非常令人开心的是,Android系统目前已经集成了TTS,提供了 ...
- Android文字转语音引擎(TTS)使用
百度网盘下载地址 密码:3si0资源来源:https://blog.csdn.net/Sqq_yj/article/details/82460580?utm_source=blogxgwz4 简单比较 ...
- web端文字转语音的几种方案
最近在开发一个微信排队取号的的系统,其中对于服务员端(管理端) 需要有呼叫功能,即点按钮 就播出"xxx号顾客请就座"的声音. 经过在网上一番搜索研究,web端实现指定文字的语音播 ...
- 调用GOOGLE的TTS实现文字转语音(XE7+小米2)(XE10.1+小米5)
相关资料: 注意:在手机上必须选安装文字转语音引擎“google Text To Speech”地址:http://www.shouji56.com/soft/GoogleWenZiZhuanYuYi ...
- Android实例-调用GOOGLE的TTS实现文字转语音(XE7+小米2)(XE10.1+小米5)
相关资料: 注意:在手机上必须选安装文字转语音引擎“google Text To Speech”地址:http://www.shouji56.com/soft/GoogleWenZiZhuanYuYi ...
随机推荐
- Java Selenium - 元素操作 (三)
接上一篇,我们依然以京东的网站做示例. 三,单选项 下面来做这样一条case: 1. 登录京东旅行网页. 2. 在国内机票板块,购买从北京到武汉的往返机票,时间为明天出发,一周后返回. 3.搜索机票. ...
- Win10 JDK 配置
分两行建,点击新建, %JAVA_HOME%\bin %JAVA_HOME%\jre\bin
- rosetta mpi error: protocols.jobdist.JobDistributors:(0)Master Node -- Waiting for job request:tag=1
很简单,因为使用了mpi编译版本的rosetta,却只给它分配了一个线程,然后这个线程用于分配任务,就没有线程跑任务,所以就freeze了
- JAVA编程思想学习笔记3-chap7-9-斗之气3段
1.子类构造器会自动调用基类的默认构造器,如果为有参数构造器,则需要手动调用 ①this(args):调用本类中的其它构造器(只能调用一次) ②super(args):调用基类带参数的构造器 2.组合 ...
- cocos2d JS touch屏幕点击事件监听 cc.EventListener.TOUCH
var self = this; this.touchListener = cc.EventListener.create({ event: cc.EventListener.TOUCH_ONE_BY ...
- Selenium基础知识(五)多窗口切换
说到多窗口切换必须想到driver.switch_to.window()方法 driver.switch_to.window() 实现在不同窗口之间切换 driver.current_window_h ...
- SQLite之C#连接SQLite
SQLite是一个开源.免费的小型的Embeddable RDBMS(关系型数据库),用C实现,内存占用较小,支持绝大数的SQL92标准,现在已变得越来越流行,它的体积很小,被广泛应用于各种不同类型的 ...
- 8.一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?
注:这题胜在区分度高,知识点覆盖广,再不懂的人,也能答出几句, 而高手可以根据自己擅长的领域自由发挥,从URL规范.HTTP协议.DNS.CDN.数据库查询. 到浏览器流式解析.CSS规则构建.lay ...
- java中二维数组的复制克隆
https://blog.csdn.net/qq_37232304/article/details/79950022
- rpgmakermv(10) GraphicalDesignMode
插件地址:https://github.com/triacontane/RPGMakerMV/blob/master/GraphicalDesignMode.js 原文: メニュー画面や戦闘画面など各 ...