using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using TTSAPILib;
namespace demo_vs2005_csharp
{
public partial class Form1 : Form
{
public uint SMSPF_DEFAULT = 0; //默认方式
public uint SMSPF_SYNC = 1 << 0; //阻塞朗读方式
public uint SMSPF_PURGEBEFORESPEAK = 1 << 1;
public uint SMSPF_IS_FILENAME = 1 << 2;
public uint SMSPF_PERSIST_XML = 1 << 3;
public uint SMSPF_SPEAK_PUNC = 1 << 4; //朗读标点符号
public uint SMSPF_NLP_SPEAK_NUMBER = 1 << 5; //按数码方式朗读数字
public uint SMSPF_VOICE_CHINESEFEMALE = 1 << 6; //中文女声
public uint SMSPF_VOICE_ENGLISHMALE = 1 << 7; //英文男声
public uint SMSPF_ENABLECHANGE_RATE = 1 << 8; //语速可以改变,默认可以改变,此项不是必须.
ushort iVolume;
int iRate;
TTSAPILib.smVoiceCE sp = new TTSAPILib.smVoiceCE();
//需先添加引用 TTSAPILib.dll
//保证语音库已经安装,具体参看帮助文档.
public Form1()
{
try
{
InitializeComponent();
sp.SetRate(0); //设置朗读语速
sp.SetVolume(100); //设置朗读音量
//设置通知函数
//参数1的窗口句柄,表示显示高亮显示的文本框,如果设置为NULL或者0,则高亮显示功能无效
//参数2的窗口句柄,表示朗读开始,朗读结束的信息返回文本框
sp.SetNotifyEditWindow(this.textBox1.Handle.ToInt32(), this.textBox3.Handle.ToInt32());
}
catch (Exception ex)
{
}
}
private void button1_Click(object sender, EventArgs e)
{
try
{
//中文女声朗读函数
//第一个参数表示输入的文本
//第二个参数表示朗读语音库和性能参数设置,SMSPF_VOICE_CHINESALEFEME表示中文女声语音库,
// 也可以选择是否朗读标点等,具体可以参考帮助文档
//第三个参数dwReadStart 0,表示从头开始朗读,否则从相应位置开始朗读
//第四,第五参数目前保留不用
sp.Speak("你好", SMSPF_VOICE_CHINESEFEMALE, 0, null, null);
}
catch (Exception ex)
{
}
}
private void button4_Click(object sender, EventArgs e)
{
//停止朗读
sp.Stop(); //停止函数
}
private void button3_Click(object sender, EventArgs e)
{
//英文男声朗读函数
//第一个参数表示输入的文本
//第二个参数表示朗读语音库和性能参数设置,SMSPF_VOICE_ENGLISHMALE表示英文男声语音库,
// 也可以选择是否朗读标点等,具体可以参考帮助文档
//第三个参数dwReadStart 0,表示从头开始朗读,否则从相应位置开始朗读
//第四,第五参数目前保留不用
sp.Speak("dsdfaf", SMSPF_VOICE_ENGLISHMALE, 0, null, null);
}
private void button2_Click(object sender, EventArgs e)
{
//暂停/继续朗读
sp.Pause(); //暂停函数
// sp.Resume(); //继续函数
}
private void trackBar1_ValueChanged(object sender, EventArgs e)
{
//设置音量
//音量设置,范围在 0 - 100
sp.GetVolume(out iVolume); //获得朗读音量
iVolume = 50; //设置音量.
sp.SetVolume(iVolume); //设置朗读音量
}
private void trackBar2_ValueChanged(object sender, EventArgs e)
{
//设置语速
//语速设置,范围在 -10 - 9
sp.GetRate(out iRate); //获得朗读语速
iRate = 9; //设置语速.
sp.SetRate(iRate); //设置朗读语速
}
private void button5_Click(object sender, EventArgs e)
{
//朗读到wave文件函数
//第一个参数表示输入的文本
//第二个参数表示朗读语音库和性能参数设置,SMSPF_VOICE_CHINESEFEMALE表示中文女声语音库,
// 也可以选择是否朗读标点等,具体可以参考帮助文档
//第三个参数表示WAVE文件名
//第四,第五参数目前保留不用
sp.SpeakToVoiceFile(this.textBox1.Text, SMSPF_VOICE_ENGLISHMALE, this.textBox2.Text, null, null);
}
private void textBox3_TextChanged(object sender, EventArgs e)
{
//返回 "TTS_SDK_READ_START" 信息,表示朗读开始,可以根据用户需要进行相应处理
// if (string.Compare(this.textBox3.Text, "TTS_SDK_READ_START") == 0)
// MessageBox.Show("语音朗读开始,在此你可以加入朗读开始时的用户代码", "加入朗读开始时的用户代码");
//返回 "TTS_SDK_READ_END" 信息,表示朗读结束,可以根据用户需要进行相应处理
// if (string.Compare(this.textBox3.Text, "TTS_SDK_READ_END") == 0)
// MessageBox.Show("语音朗读结束,在此你可以加入朗读结束时的用户代码", "加入朗读结束时的用户代码");
}
}
}
效果图:
源码下载:猛点击我
说明:
在wince系统里,语音提示是用第三方的文件 不是免费的。需要 注册什么的,说白了 就是交钱 在放api
我在网上找了好久 也没有发现破解版 或者免费的 wince应用语音提示的资料 C# 我是没有找到,其他不知道 我也不擅长
但是 虽然不是免费的,但是可以基本实现语音提示,但是
-------------------------------------
语音提示 流程如下:
前面系统xx+我们想要的语音提示内容+后面系统xx
注:提示语音 前面和后面都不是咱们要的 都是系统提示 注册什么的 我打开了那个注册官方网站 大约折合RMB 将近1W 尼玛 太贵了
--------------------------------------------
我就考虑 前面后面 怎么去掉它 纠结
-------------