现在的位置: 首页 > 综合 > 正文

wince6.0 语音提示(.net平台下)

2013年09月17日 ⁄ 综合 ⁄ 共 3095字 ⁄ 字号 评论关闭
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 尼玛 太贵了
--------------------------------------------
我就考虑 前面后面 怎么去掉它 纠结
-------------

抱歉!评论已关闭.