python tts 保存wav_C#文本转语音并保存wav和MP3文件
回顾上次写博客至今都有4个多月了,最近工作比较的忙没时间写博文。以后会多坚持写博文,与大家分享下最近遇到的问题。最近因为项目需要,研究了下用C#开发TTS。下面把大体的思路给大家说说,希望对大家有所帮助。
首先需要了解下MS的SAPI,它是微软的语音API。它包括了语音识别SR引擎和语音合成SS引擎两种语音引擎。等下会给大家看下语音合成SS引擎。它由不同的版本,操作系统的不同使用的版本不同,不过我喜欢使用其他的合成语音包,比如:NeoSpeech公司的合成语音包。回过头来,MS 的SAPI的版本有:5.1、5.3和5.4。具体用途如下:
1. Windows Speech SDK 5.1版本支持xp系统和server 2003系统,需要下载安装。XP系统默认只带了个Microsoft Sam英文男声语音库,想要中文引擎就需要安装Windows Speech SDK 5.1。下载地址:http://www.microsoft.com/download/en/details.aspx?id=10121
2. Windows Speech SDK 5.3版本支持Vista系统和Server 2008系统,已经集成到系统里。Vista和Server 2003默认带Microsoft lili中文女声语音库和Microsoft Anna英文女声语音库。
3. Windows Speech SDK 5.4版本支持Windows7系统,也已经集成到系统里,不需要下载安装。Win7系统同样带了Microsoft lili中文女声语音库和Microsoft Anna英文女声语音库。Microsoft lili支持中英文混读。
到这里环境就准备好了,接下来讲诉下开发TTS要用到的类,我使用的是.net类库提供的语音类System.Speech.Synthesis.SpeechSynthesizer,使用前需要添加引用:System.Speech。该类的主要方法、属性、事件如下:
方法:
GetInstalledVoices():获取当前系统中安装的语音播放人,返回一个VoiceInfo对象集合,具体的对象有在控制面板中,语音项可以查看。Xp默认是Microsoft Sam。
SelectVoice(string):选择当前朗读的人员,参数是朗读者名称,如:Microsoft Sam
SpeakAsync(string):开始进行异步朗读,参数是朗读的文本。
Speak(string):开始进行朗读,参数是朗读的文本。这里我没有弄懂SpeakAsync和Speak的区别,我试了下效果都一样。
Pause():暂停正在播放朗读。
Resume():继续播放暂停的朗读。
SetOutputToWaveFile(string):保存语音文件,调用该方法后需要调用Speak方法。参数是保存文件的路径。如:d:/124.wav或d:/123.MP3
SetOutputToNull():保存文件结束语句,必须调用该语句,否则生产的语音文件无法播放。
属性:
Rate:播放语速,-10~10
Volume:音量调节:0~100
Voice:正在使用某个人员播放,返回:VoiceInfo对象。
事件:
SpeakCompleted:朗读完成事件,朗读完成后会触发该时间。可以在该事件中处理播放完成后的流程。
SpeakStarted:朗读开始事件。
SpeakProgress:朗读过程事件,可以继续一些进度条处理。
。。。。
其他属性、方法、事件用得少就不多讲了,自己看下API就知道了。有什么问题可以给我留言,我们共同探讨。界面如下:
还是把代码贴上来吧,主要代码如下:
private SpeechSynthesizer synth = null;//语音对象
///
/// 返回一个SpeechSynthesizer对象
///
///
private SpeechSynthesizer GetSpeechSynthesizerInstance()
{
if (synth == null)
{
synth = new SpeechSynthesizer();
}
return synth;
}
///
/// 获得朗读设置对象
///
///
private VoiceClass GetVoiceClass()
{
VoiceClass setViceClass = new VoiceClass();
setViceClass.VoiceName = cboTokens.Text;
setViceClass.Rate = int.Parse(cboSpeed.Text);
setViceClass.Volume = tbVoice.Value;
setViceClass.VoiceText = txtInput.Text;
return setViceClass;
}
///
/// 播放
///
///
///
private void btnGo_Click(object sender, EventArgs e)
{
if (IsVaild())
{
VoiceClass setViceClass = GetVoiceClass();//VoiceClass 是自己建立的一个类,里面封转了语速 音量 播放人 播放文本
Thread thread = new Thread(RingVoice);
thread.Start(setViceClass);
}
}
///
/// 开始朗读 放在线程中
///
///
public void RingVoice(object VoiceObject)
{
try
{
VoiceClass voiceClass = (VoiceClass)VoiceObject;
synth = GetSpeechSynthesizerInstance();
synth.SelectVoice(voiceClass.VoiceName);
synth.Rate = voiceClass.Rate;
synth.Volume = voiceClass.Volume;
synth.SpeakAsync(voiceClass.VoiceText);
}
catch (Exception er)
{
MessageBox.Show(er.ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
///
/// 保存
///
///
///
private void btnSave_Click(object sender, EventArgs e)
{
if (IsVaild())
{
synth = GetSpeechSynthesizerInstance();
VoiceClass voiceClass = GetVoiceClass();
synth.SelectVoice(voiceClass.VoiceName);
synth.Rate = voiceClass.Rate;
synth.Volume = voiceClass.Volume;
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Title = "保存文档";
saveFileDialog.Filter = "*.wav|*.wav|*.mp3|*.mp3";
saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
DialogResult saveDialog = saveFileDialog.ShowDialog();
try
{
if (saveDialog == System.Windows.Forms.DialogResult.OK)
{
synth.SetOutputToWaveFile(saveFileDialog.FileName);
synth.Speak(voiceClass.VoiceText);
synth.SetOutputToNull();
System.Diagnostics.Process.Start("Explorer.exe", string.Format(@"/select,{0}", saveFileDialog.FileName));//打开wav目录并选中文件
}
}
catch (Exception er)
{
MessageBox.Show(er.ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
///
/// 继续
///
///
///
private void btnContinum_Click(object sender, EventArgs e)
{
synth.Resume();
}
///
/// 暂停
///
///
///
private void btnStop_Click(object sender, EventArgs e)
{
synth.Pause();
}
有个问题,不知道是什么原因,要播放的内容:欢迎致电12345客服服务系统,它把12345给我朗读成:1万2千3百4十五。这个问题还在解决中,谁知道麻烦给我留下言,谢谢。
python tts 保存wav_C#文本转语音并保存wav和MP3文件相关推荐
- MS-TTS/Edge-TTS免费文本转语音,一键合成导出MP3音频
原文:MS-TTS/Edge-TTS免费文本转语音,一键合成导出MP3音频_治廷君 注意:本工具完全免费,所以不提供任何售后服务及咨询,有问题请看教程或阅读下方文档自行解决,关于BUG,公众号后台回复 ...
- 用python写一个变声器,要求导入mp4或者mp3文件,将视频中的声音变成女声
用python写一个变声器,要求导入mp4或者mp3文件,将视频中的声音变成女声 1.安装 pydub 库 2.然后可以使用以下代码导入 mp4 或 mp3 文件并将其变成女声: 1.安装 pydub ...
- python音频转文字腾讯_使用Python三步完成文本到语音的转换
重磅干货,第一时间送达 一篇文章带你了解文本到语音转换步骤 在<这篇文章>中,我们有简单提到"文本语音转换"的相关内容,本文将继续讲述其详细实现步骤. 这里小编将介绍文 ...
- 使用Python三步完成文本到语音的转换
点击关注我哦 一篇文章带你了解文本到语音转换步骤 在<这篇文章>中,我们有简单提到"文本语音转换"的相关内容,本文将继续讲述其详细实现步骤. 这里小编将介绍文本到语音翻 ...
- 【Python实用API】文本转语音库-pyttsx3
文本到语音转换库 0.描述 1.安装 2.基本用法: 3.进阶 0.描述 pyttsx3是Python中的文本到语音转换库,并且它是离线工作的. pyttsx3特点: 1.离线的 2.可调节:人声选择 ...
- ekho tts 下载_Ekho TTS简介(文本转语音引擎).pptx
Ekho TTS 简介(文本转语音引擎)主讲:黄冠能;自我介绍eGuideDog项目简介Ekho的发展历史Ekho的技术简介如何向Ekho添加新的声音如何向Ekho添加新的方言WebSpeech;19 ...
- python编程实现将文本音频数据还原为wav语音文件
主要功能 主要实现将文本音频数据转为wav文件. 通过我上一个博客的python编程读取wav文件数据得到的txt格式音频数据,再通过此程序实现将之前的文本音频数据再还原为wav语音文件. 程序 程序 ...
- python实现文字转语音_利用python实现自己的文本转语音
1.安装python3.8.5 python >> downloads >> windows >> Windows x86-64 execut ...
- 【Java音频操作】调用有道词典语音接口,生成单词MP3文件,支持自定义重复次数
参考博客:Java爬虫-爬取四级词汇网站音频 运行效果 根据想要拼接的单词,生成一个单词朗读的mp3文件,可以自定义每个单词朗读时的重复次数. 代码思路: 先把要拼接的单词放进一个String数组中 ...
最新文章
- 多地给毕业生发补贴!有的高达6000元/人
- 如何将MP3格式音乐转换成M4R格式
- C语言Kruskal 算法 (MST)(附完整源码)
- java rhino_在Java 8中使用Rhino
- linux ps 进程组,linux进程管理(2)---进程的组织结构
- [Python]小甲鱼Python视频第026课(字典:当索引不好用时2)课后题及参考解答
- 解决python报错写入文件 io.UnsupportedOperation: not writable
- Python批量转换ppt文件为pptx文件
- Oracle CRS/ASM/RAC版本兼容对应表
- 学习SQLAlchemy Core
- Scratch-Q版三国小人物角色素材分享,值得您的收藏!
- Win10 封装报错处理
- 揭开A股38位「 90后」董事长的神秘面纱
- python flv转mp4_ffmpeg将多个flv文件合成为mp4(golang版)
- 12个VSCode插件工具
- 如何使用夜神模拟器开发android
- dreamweaver cs6 mac 破解版
- 为什么MD5算法不可逆,但网上有很多网站声称能够解密MD5
- 阿里云二级域名配置-ssl证书包不安全问题记录
- Android的主线程与子线程