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) 语音听写(语音转换成文字) 实现语音合成 功能实现步骤: 导入头文件 创建文字识别对象 指定文字识别后的回调代理对象 开启文 ...
随机推荐
- VS2010+OpenMP的简单使用
OpenMP是把程序中的循环操作分给电脑的各个CPU处理器并行进行.比如说我要循环运行100次,我的电脑有两个处理器,那OpenMP就会平均分给两个处理器并行运行,每个处理器运行50次.使用方法 1. ...
- sql中having、group by用法及常用聚合函数
having是用在聚合函数的用法.当我们在用聚合函数的时候,一般都要用到GROUP BY 先进行分组,然后再进行聚合函数的运算.运算完后就要用到HAVING 的用法了,就是进行判断了. 注意:sele ...
- Ames房价预测特征工程
最近学人工智能,讲到了Kaggle上的一个竞赛任务,Ames房价预测.本文将描述一下数据预处理和特征工程所进行的操作,具体代码Click Me. 原始数据集共有特征81个,数值型特征38个,非数值型特 ...
- spring security oauth2
https://connect.qq.com/manage.html#/ http://wiki.connect.qq.com/%E7%BD%91%E7%AB%99%E5%BA%94%E7%94%A8 ...
- serialPort操作结构体Hashtable的使用
- LaTeX 中图片格式错误情况
Unknown graphics extension: .eps 利用宏包usepackage {graphicx} 是图片和pdflatex一起用时的错误.注:{不是所有的时候,有时候也能通过} 两 ...
- Effective java-对象的创建和销毁
说到java对象的创建,首先应该提下java的内存机制,最主要的两块应该就是堆内存和栈内存. 简单点来说栈内存主要是保存基本数据类型的值和保存引用变量,堆内存主要用来存放new产生的对象,数组. 堆是 ...
- 关于Kafka监控方案的讨论
之前在知乎上尝试过回答这个问题,后来问的人挺多,干脆在博客里面保存一下. 目前Kafka监控方案看似很多,然而并没有一个"大而全"的通用解决方案.各家框架也是各有千秋,以下是我了解 ...
- message.go
+MsgIDLength:] return &msg, nil } func writeMessageToBackend(buf *bytes.Buffer, msg *Message ...
- HEOI2018——welcome to NOI2018
我不得不和烈士和小丑走在同一道路上, 万人都要将火熄灭, 我一人独将此火高高举起, 我借此火得度一生的茫茫黑夜. ——海子 弹指一瞬间,翘首以盼的HEOI2018就来了. 我,一个滑稽的小丑,带 ...