开发者社区> 技术小甜> 正文

程序中的语音实现

简介:
+关注继续查看

如果在程序中播放语音,该怎么实现呢?(下需代码是在VS2012中实现)


第一个我想到的是用语音文件,可以引用播放器插件到应用中,再调用这些插件的API来实现。

首先创建一个控制台应用,在解决方案中添加引用,选中com选项,找到Windows Media Player,然后添加到引用中,在引用中,这个插件的命名空间是WMPLib。接下来就可以用这个插件来实现语音的播放了。

选来引用加入的命名空间:

using WMPLib;

然后在Main方法中写入

WindowsMediaPlayer player = newWindowsMediaPlayer();//实例化播放器类型

player.URL = "F:/test/a.wma";//把语音文件路径赋给播放器

Console.Read();//暂停程序,不至于退出

用播放器插件实现起来非常简单,其实插件功能还很强大,可能理进一步研究player的成员。


第二个,用vbs脚本文件,首先创建一个记事本文件,打开记事本,在里面写入下面代码:

CreateObject("SAPI.SpVoice").Speak"测试语音文件.",然后保存并把扩展名改为.vbs,这时,文件的图标就发生了变化,然后双击该vbs文件,就会听到语音朗读。

这好像与程序无关,不急,接下来要在C#中,利用IO来处理该文件,并实现对他的调用。

先引入命名空间

using System.IO;

然后生成并调用脚本代码如下:

string path = @"F:/test/a.vbs";//定义脚本路径

string content = "CreateObject(\"SAPI.SpVoice\").Speak\"{0}\"";//定议脚本内容框架

content= string.Format(content, "你好,这是一段测试语音!");//合并生成脚本内容

File.WriteAllText(path,content,Encoding.Default);//把内容写入脚本文件

Process.Start(path);//调用脚本文件

用机器去读语音,是个好主意,但还要生成脚本文件,就显的有些业余了,有没有不生成语音文件的呢,那就是第三种情况。


第三种,用微软的Speech Platform

要开发Microsoft Speech Platform应用,首先要整理好开发环境

需要下载四个文件

1SpeechPlatformRuntime.msi

2MSSpeech_TTS_zh-CN_HuiHui.msi

3MSSpeech_SR_zh-CN_TELE.msi

4MicrosoftSpeechPlatformSDK.msi

文件1的下载地址为:http://www.microsoft.com/en-us/download/details.aspx?id=27225

文件23的下载地址为:http://www.microsoft.com/en-us/download/details.aspx?id=27224

文件4的下载地址为:http://www.microsoft.com/en-us/download/details.aspx?id=27226

这些文件有x86,有64位的,要依自己的OS而定。

下载安装完这些文件后,可以在解决方案中引用安装的SDK,默认安装在C:\Program Files\Microsoft SDKs\Speech\v11.0\Assembly\ Microsoft.Speech.dll(要依据系统的路径确定根目录)

在代码中引用命名空间

usingMicrosoft.Speech.Synthesis;

实现播放语音代码如下:

SpeechSynthesizer ss = newSpeechSynthesizer();//实例化播放语音类型

ss.SetOutputToDefaultAudioDevice();//设置播放语音设备,为当前默认

ss.Volume= 10;//设置音量

ss.Speak("这是一个测试语音!");//读语音

这样就实现了简单的语音而不产生语音文件


后两种基实都是利用了微软的TTS功能来实现的,第三种更为专业一些。


下面简单比较几种方式的优缺点:

播放器插件

vbs

Speech Platform


优点

音质效果好,和语音文件相关。

使用简单。

只需要录入语音文字就可以,语音信息灵活

不需要安装文件

不需要或产生任何文件

语音功能更强大

缺点

需要录制语音,不灵活。

音质死板,单调

需要生成脚本文件

音质死板,单调

需要安装包
















本文转自桂素伟51CTO博客,原文链接:http://blog.51cto.com/axzxs/1243632,如需转载请自行联系原作者







版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
20725 0
阿里云服务器ECS远程登录用户名密码查询方法
阿里云服务器ECS远程连接登录输入用户名和密码,阿里云没有默认密码,如果购买时没设置需要先重置实例密码,Windows用户名是administrator,Linux账号是root,阿小云来详细说下阿里云服务器远程登录连接用户名和密码查询方法
22367 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
23589 0
讯飞离线语音合成(语记|语音+)
讯飞离线语音合成(语记|语音+) 讯飞的语音合成有三种方式 在线语音合成(免费) 离线使用语记语音合成(免费,需要本地装一个语记App并且下载离线资源) 使用讯飞离...
1893 0
C#语音朗读文本 — TTS的实现
原文:C#语音朗读文本 — TTS的实现 TTS, Text To Speech的缩写,是使用语音朗读文本的技术。目前,在国内应用较多的是排队叫号系统 Windows 平台的TTS,通常使用的是微软自带的 Speech API。
2267 0
讯飞在线语音合成
讯飞在线语音合成 效果图 源码 下载地址(Android Studio工程):http://download.
1227 0
+关注
10140
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载