C# 语音合成
微软MS的文本转语音
1. 引用System.Speech
2. 通过SpeechSynthesizer类朗读文本
new SpeechSynthesizer().SpeakAsync("我们都是好孩子We're good kids.")
3. Speck vs SpeckAsync函数
- PlayAsync--异步播放,可以将需要朗读的文本进行排队。如果不需要,可以按如下取消当前的播放操作。
- Speak--同步播放,会卡UI线程。如果在朗读时,界面没有其它操作,则可以使用此函数
private SpeechSynthesizer speechSyn=new SpeechSynthesizer();
/// <summary>
/// 异步播放
/// </summary>
private void PlayAsync()
{
var currentSpokenPrompt = speechSyn.GetCurrentlySpokenPrompt();
if (currentSpokenPrompt != null)
{
speechSyn.SpeakAsyncCancel(currentSpokenPrompt);
}
speechSyn.SpeakAsync(richTextBox1.Text);
}
/// <summary>
/// 同步播放
/// 注:卡UI
/// </summary>
private void Play()
{
using (SpeechSynthesizer speechSyn = new SpeechSynthesizer())
{
speechSyn.Speak(richTextBox1.Text);
}
}
4. 设置朗读角色
var speechSynthesizer = new SpeechSynthesizer();
var voices= speechSynthesizer.GetInstalledVoices(CultureInfo.CurrentCulture).Select(x => x.VoiceInfo.Name).ToList();
speechSynthesizer.SelectVoice(voices[]);
speechSynthesizer.SpeakAsync("我们都是好孩子We're good kids.");
5. 其它
- Rate -- 语速设置,默认为0
- Volume -- 音量设置
6. 导出音频文件
可以将文本语音合成后,导出成一个wav、mp3等音频文件。
private void ExportAudioFile()
{
using (SpeechSynthesizer speechSyn = new SpeechSynthesizer())
{
speechSyn.Volume = ;
speechSyn.Rate = ; var filePath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + $"\\{richTextBox1.Text}.mp3";
if (File.Exists(filePath))
{
File.Delete(filePath);
} speechSyn.SetOutputToWaveFile(filePath);
speechSyn.Speak(richTextBox1.Text);
speechSyn.SetOutputToDefaultAudioDevice(); MessageBox.Show($"保存录音文件成功,保存路径:{filePath}");
}
}
Demo下载
第三方的语音合成接口
- 百度 http://ai.baidu.com/tech/speech/tts
- Demo效果还可以 BaiduTTSDemo
- 有道 http://ai.youdao.com/product-tts.s?keyfrom=Bsearch-yyhc1
- Demo YouDaoTTSDemo
- 科大讯飞 https://www.xfyun.cn/services/online_tts
- 科大讯飞的语音合成效果很垃圾 XunFeiTTSDemo
如果是英文朗读的话,有道的效果最好。可以下载Demo体验下
C# 语音合成的更多相关文章
- ROS语音交互——科大讯飞语音合成TTS(二)
之前我用过科大讯飞的语音包,为了记录一下我重新使用一下 首先注册科大讯飞账号及应用,以后每个下载的在线使用SDK都是以此账户ID登录讯飞语音服务器. 下载科大讯飞在线合成包. $ unzip Linu ...
- 人工智能交互集成在线语音合成能力的Tips
在线语音合成就是在联网的场景下将文字转换成声音,实现机器向人的声音交互.这个概念应该是比较好理解的,下面就结合官网的Android在线合成的Demo讲解一下合成的流程以及大家经常遇到的一些问题. 到官 ...
- C#中语音合成简单使用
我使用的是vs2013 1.在项目中添加引用,项目->添加引用->COM选择Microsoft Speech Object Library 2.在需要使用语音合成的地方调用代码: SpVo ...
- C#将科大讯飞语音合成文件转换为MULAW音频格式
任务描述:通过科大讯飞语音合成组件在线完成文本转语音的合成,然后再转换为电话系统IVR要求的音频格式: wave mu-law 16位 8kHZ 64kbps. 完成步骤: 首先,我们要先通过科大讯飞 ...
- android用讯飞实现TTS语音合成 实现中文版
Android系统从1.6版本开始就支持TTS(Text-To-Speech),即语音合成.但是android系统默认的TTS引擎:Pic TTS不支持中文.所以我们得安装自己的TTS引擎和语音包. ...
- 谷歌黑科技WaveNet,更先进的语音合成
导读 Google 的 DeepMind 研究实验室昨天公布了其在计算机语音合成领域的最新成果——WaveNet.该语音合成系统能够模仿人类的声音,生成的原始音频质量优于目前的文本转语音系统(text ...
- C# 百度语音合成
语音合成及TTS,我们尝试使用百度的语音合成技术 不过我发现 有一种缺点在于没有离线包让我有些很不舒服,可能是在线版的 原因微软语音识别技术在Windows 2000是默认集成在系统组件中 或许我们不 ...
- 安卓TTS语音合成经验分享(科大讯飞语音+)集成
应用场景:足浴软件,技师钟房安排调派和队列排序查看,语音播报提醒.老程序是使用双屏显卡,windows系统PC上运行一个无人值守桌面程序.如今安卓机顶盒(WIFI)和MINI电视棒通过HDMI接口和支 ...
- csharp: 百度语音合成
public string API_id = "3333"; //你的ID public string API_record = null; public string API_r ...
- UI进阶 科大讯飞(2) 语音合成(文字转换成语音)
科大讯飞开放平台.SDK下载.添加静态库.初始化见UI进阶 科大讯飞(1) 语音听写(语音转换成文字) 实现语音合成 功能实现步骤: 导入头文件 创建文字识别对象 指定文字识别后的回调代理对象 开启文 ...
随机推荐
- django-团队简介的网页
团队简介的网页,是使用Django完成的 关于Django的教程网址:http://www.runoob.com/django/django-tutorial.html 小组作业成果如下:
- CSS弹性盒子的基本用法
.container { width: 302px; height: 302px; border: 1px solid; display: flex } .item { width: 100px; h ...
- Python_shelve模块操作二进制文件
import shelve #导入shelve模块 fp=shelve.open('shelve_test.dat') #创建或打开二进制文件 zhangsan={'age':38,'sex':'Ma ...
- 读《图解HTTP》有感-(了解web及网络基础)
写在前面 <图解HTTP>是由上野宣先生著,于均良先生译 闲暇之余!写写博文甚是高兴.如有不准确,望各位斧正.共同学习! 正文 HTTP协议是什么?能做什么? HTTP(超文本传输协议)实 ...
- js算法初窥01(排序算法01-冒泡、选择、插入)
排序,我想大家一定经历过或者正在经历着.或许你不懂算法,对排序算法一无所知,但是你一定用过一些第三方库的api来一键排序,那么,在你享受便捷的同时,你是否想过它的底层是如何实现的?这样的算法实现方式是 ...
- LR测试
LoadRunner种预测系统行性能负载测试工具通模拟千万用户实施并发负载及实性能监测式确认查找问题LoadRunner能够整企业架构进行测试通使用 LoadRunner企业能限度缩短测试间优化性能加 ...
- ExecutorCompletionService分析及使用
当我们通过Executor提交一组并发执行的任务,并且希望在每一个任务完成后能立即得到结果,有两种方式可以采取: 方式一: 通过一个list来保存一组future,然后在循环中轮训这组future,直 ...
- JS中清空字符串前后空格
在JS 操作的时候 长期会有对字符串的操作, 但是在JS 中不像在C#中 有字符串的方法 Trim() 来对字符串进行处理 . 所以自己写一个对字符串前后清楚空格的方法还是有必要的 以免以后忘记了 ...
- 在Python中用Request库模拟登录(四):哔哩哔哩(有加密,有验证码)
!已失效! 抓包分析 获取验证码 获取加密公钥 其中hash是变化的,公钥key不变 登录 其中用户名没有被加密,密码被加密. 因为在获取公钥的时候同时返回了一个hash值,推测此hash值与密码加密 ...
- JavaScript prototype原型和原型链详解
用过JavaScript的同学们肯定都对prototype如雷贯耳,但是这究竟是个什么东西却让初学者莫衷一是,只知道函数都会有一个prototype属性,可以为其添加函数供实例访问,其它的就不清楚了, ...