调用 Windows 7 中英文混合朗读
1、windows7内置语音识别
2、文本到语音转换增加了 Microsoft Lili - Chinese(China) ,支持中英文混合朗读
3、女声、部分词组基本发音准确
以上让我有做个小程序的冲动;如下:
1、引入SpeechLib.dll
2、创建form
3、编写代码
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
} private void FormMain_Load(object sender, EventArgs e)
{
GetVoices();
} private void GetVoices()
{
SpVoice voice = new SpVoiceClass();
ISpeechObjectTokens voices = voice.GetVoices("", "");
var list = new List<string>();
foreach (ISpeechObjectToken token in voices)
list.Add(token.GetDescription());
cbSpeechType.DataSource = list;
} private void btnSpeechText_Click(object sender, EventArgs e)
{
SpeechText(null);
} private void SpeechText(string fileName)
{
Cursor = Cursors.WaitCursor;
SpFileStream stream = null;
SpVoice voice = new SpVoiceClass();
if (fileName + "" != "")
{
stream = new SpFileStreamClass();
stream.Open(fileName, SpeechStreamFileMode.SSFMCreateForWrite, false);
voice.AudioOutputStream = stream;
}
voice.Voice = voice.GetVoices("", "").Item(cbSpeechType.SelectedIndex);
voice.Volume = tbVol.Value;
voice.Rate = tbSpeechSpeed.Value;
voice.Speak(tbText.Text, SpeechVoiceSpeakFlags.SVSFDefault);
if (fileName + "" != "" && stream != null)
stream.Close();
Cursor = Cursors.Arrow;
} private void btnRecordSpeech_Click(object sender, EventArgs e)
{
Cursor = Cursors.WaitCursor;
using (var saveFileDialog = new SaveFileDialog())
{
saveFileDialog.FileName = "MyVoice.wav";
saveFileDialog.Filter = "Wave (*.wav)|*.wav";
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
SpeechText(saveFileDialog.FileName);
}
}
Cursor = Cursors.Arrow;
}
}
以上功能支持朗读文本框内文本,支持讲文本输出语音文件;
参考应用场景:
1、尝尝鲜,再删除
2、将小说文本转化为音频放MP3内去听
3、骗骗小孩
运行环境需求:
1、WINDOWS 7
2、其他未知
说再多不如放个代码,所以本文从简,请下载后编译运行。
出处:http://www.cnblogs.com/Chinasf/archive/2010/01/04/1639282.html
调用 Windows 7 中英文混合朗读的更多相关文章
- ThinkPHP+Smarty模板中截取包含中英文混合的字符串乱码的解决方案
好几天没写博客了,其实有好多需要总结的,因为最近一直在忙着做项目,但是困惑了几天的Smarty模板中截取包含中英文混合的字符串乱码的问题,终于解决了,所以记录下来,需要的朋友看一下: 出现乱码的原因: ...
- C#调用windows API的一些方法
使用C#调用windows API(从其它地方总结来的,以备查询) C#调用windows API也可以叫做C#如何直接调用非托管代码,通常有2种方法: 1. 直接调用从 DLL 导出的函数. 2. ...
- mfc 调用Windows的API函数实现同步异步串口通信(源码)
在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信.串口通信方便易行,应用广泛. 一般情况下,工控机和各智能仪表通过RS485总线进行通信.RS485的通信方式是半 ...
- C#与JS实现 获取指定字节长度 中英文混合字符串 的方法
平时在作数据库插入操作时,如果用 INSERT 语句向一个varchar型字段插入内容时,有时会因为插入的内容长度超出规定的长度而报错. 尤其是插入中英文混合字符串时,SQL Server中一般中文要 ...
- 【代码笔记】iOS-判断中英文混合的字符长度的两种方法
一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. ...
- C#调用Windows API函数截图
界面如下: 下面放了一个PictureBox 首先是声明函数: //这里是调用 Windows API函数来进行截图 //首先导入库文件 [System.Runtime.InteropServices ...
- 【转】用C#调用Windows API向指定窗口发送
一.调用Windows API. C#下调用Windows API方法如下: 1.引入命名空间:using System.Runtime.InteropServices; 2.引用需要使用的方法,格式 ...
- Lua截取utf-8编码的中英文混合字符串
参考博客:UTF8字符串在lua的截取和字数统计[转载] 需求 按字面个数来截取子字符串 函数(字符串, 开始位置, 截取长度) utf8sub(,) = 好1世界哈 utf8sub(,) = 你好1 ...
- C#中调用Windows API的要点 .
介绍 API(Application Programming Interface),我想大家不会陌生,它是我们Windows编程的常客,虽然基于.Net平台的C#有了强大的类库,但是,我们还是不能否认 ...
随机推荐
- [USACO08DEC]在农场万圣节Trick or Treat on the Farm
题目描述 Every year in Wisconsin the cows celebrate the USA autumn holiday of Halloween by dressing up i ...
- server_2003_r2_standard_sp2_vl_X13-46532
1. 安装的是 cn_win_srv_2003_r2_standard_with_sp2_vl_cd1_X13-46532.iso CD2 它没有要求装 也就没装,貌似 网上搜到 安装CD2需要另外的 ...
- Eclipse和MyEclipse的区别
翻译:日食,月食. eclipse是免费的,myeclipse是收费的. myeclipse是eclipse的插件.
- python学习笔记(virtualenv下载安装)
之前博客评论中有人建议我面对多个python版本的情况.可以使用virtualenv这个python虚拟沙盒 首页是利用pip下载.关于pip如何下载安装前面的博客中已经提到就不细说 cmd直接进入p ...
- .Net Core使用jexus配置https
今天搞了一下怎么从http换成https,写一篇博客记录该过程.关于jexus的安装和使用请看我之前的一篇博客<Jexus部署Asp.Net Core项目>,唯一的不同是,将jexus升级 ...
- "下载"文件夹的desktop.ini
下载 [.ShellClassInfo] LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21798 IconResource=%S ...
- 在web.xml中配置spring配置文件的路径
<context-param> <param-name>contextConfigLocation</param-name> <param-v ...
- Jenkins构建shell
#!/bin/bash cd Labwfcm git pull cd wfcm-api mvn clean package cd target mv wfcm-api.war wfcm-api.war ...
- 【scala】异常处理
Scala 的异常处理和其它语言比如 Java 类似. 抛出异常 Scala 抛出异常的方法和 Java一样,使用 throw 方法 throw new IllegalArgumentExceptio ...
- jsp和servlet学习总结
一.Jsp与servlet的区别: jsp是java代码嵌入html中,用java代码控制来html. Servlet完全是JAVA程序代码构成,用来流程控制和事务处理 jsp更擅长表现于页面显示,s ...