程序中的语音实现

简介:

如果在程序中播放语音,该怎么实现呢?(下需代码是在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,如需转载请自行联系原作者







相关文章
|
2月前
|
API 调度 语音技术
基于Qt的简易语音助手设计与实现
基于Qt的简易语音助手设计与实现
30 2
|
6月前
09 公众号开发 - 回复用户语音消息识别代码
09 公众号开发 - 回复用户语音消息识别代码
21 0
语音社交源码知识语音房间功能的实现
就像我说的一样,语音社交源码技术语音房间功能对于开发语音社交平台也是至关重要的,当然,开发语音社交平台还有很多功能,在以后我会为大家一一讲解,如果大家还有什么不懂的可以问我。
语音社交源码知识语音房间功能的实现
|
机器学习/深度学习 算法 机器人
FreeSWITCH ASR 电话机器人 VAD 打断 ASR集成 全功能开源代码
最近很多人都对FreeSWITCH和ASR对接比较感谢兴趣,我之前已经做了一个商业模块(商业模块请点击这里http://www.ddrj.com/callcenter/asr.html),考虑到大部分人,只是研究一下,并不准确购买商业模块,特意做一个开源项目给大家提供一个参考。
394 0
|
机器学习/深度学习 Linux API
【超简单】之基于PaddleSpeech搭建个人语音听写服务
【超简单】之基于PaddleSpeech搭建个人语音听写服务
793 0
【超简单】之基于PaddleSpeech搭建个人语音听写服务
|
机器学习/深度学习 编解码 数据可视化
【超简单】之基于PaddleSpeech语音听写桌面应用
【超简单】之基于PaddleSpeech语音听写桌面应用
389 0
【超简单】之基于PaddleSpeech语音听写桌面应用
|
机器学习/深度学习 API 语音技术
基于PaddleSpeech搭建个人语音听写服务
之基于PaddleSpeech搭建个人语音听写服务,顾名思义,是通过PaddleSpeech来搭建语音听写服务的,主要思路如下。 1.录音长度切分 2.录音听写 3.录音文本加标点
475 0
|
机器学习/深度学习 自然语言处理 机器人
Freesiwtch VAD语音识别模块参数-开发电话语音机器人
高性能商业VAD静音检测模块、噪音过滤、自动增益模块 2、无损不压缩采集方式,识别效率全国最高 3、异步说话、多句话, 整句话事件 4、最小说话时间、最大说话时间、最小停顿时间、最大停顿时间
|
人工智能 自然语言处理 JavaScript
天猫精灵语音交互体验
生活有良伴,万物有精灵。天猫精灵是阿里推出的人工智能的产品,主要与人进行交互,通过人工智能,改变大众生活方式。生活中经常遇到的场景,小朋友经常使用天猫精灵播放“米小圈上学记”。本篇文章简单介绍下,如何自定义天猫精灵语音交互。
天猫精灵语音交互体验
|
自然语言处理 人机交互 语音技术
阿里云智能语音交互中录音文件识别服务的简单使用
智能语音交互产品基于语音识别、语音合成、自然语言理解等技术,实现“能听、会说、懂你”式的智能人机交互体验,适用于智能客服、质检、会议纪要、实时字幕等多个企业应用场景,识别是针对已经录制完成的录音文件,进行离线识别的服务。录音文件识别是非实时的,识别的文件需要提交基于HTTP可访问的URL地址,不支持提交本地文件。此篇文章简单介绍下javasdk的调用
843 0
阿里云智能语音交互中录音文件识别服务的简单使用