语音技术——自定义播放中文语音

在做称重软件过程中,由于要使用语音播报称重量的功能因此做了如下代码,希望能为初学语音技术的朋友带来帮助。(个人技术有限,欢迎大家指点) 

using System;
using System.Collections.Generic;
using System.Text;
using System.Media;

namespace WeightSystem
{
    public class ClsWeightMusic
    {
        /// <summary>
        /// WAV文件路径
        /// </summary>
        string strMusicPath;

        /// <summary>
        /// 是否循环播放
        /// </summary>
        bool isLoop;

        /// <summary>
        /// 获取或设置WAV文件路径
        /// </summary>
        public string MusicPath
        {
            get
            {
                return this.strMusicPath;
            }
            set
            {
                this.strMusicPath = value;
            }
        }

        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="musicPath">WAV文件路径</param>
        public ClsWeightMusic(string musicPath, bool isLoop)
        {
            this.strMusicPath = musicPath;
            this.isLoop = isLoop;
        }

        /// <summary>
        /// 播放WAV文件
        /// </summary>
        /// <returns></returns>
        public bool PlayWav()
        {
            SoundPlayer sndPing = new SoundPlayer(strMusicPath);

            if (this.isLoop)
            {
                sndPing.PlayLooping();
            }
            else
            {
                sndPing.Play();
            }

            return true;
        }
    }
}

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Data;

namespace WeightSystem.ClassPack
{
    class ClsWeightFun
    {

       /// <summary>
       /// 构造函数
       /// </summary>
        public ClsWeightFun()
        {

        }

        #region 语音控制 (播放语音文件)

        /// <summary>
        /// 根据参数选择读取语音文件
        /// </summary>
        /// <param name="sWav">语音选择参数</param>
        private void wavPlayString(string sWav)
        {
            ClsWeightMusic clsGM;

            try
            {
                switch (sWav)
                {
                    case "零":
                        clsGM = new ClsWeightMusic(Application.StartupPath + "//Wav//零.wav", false);
                        clsGM.PlayWav();
                        Thread.Sleep(357);
                        break;
                    case "壹":
                        clsGM = new ClsWeightMusic(Application.StartupPath + "//Wav//壹.wav", false);
                        clsGM.PlayWav();
                        Thread.Sleep(383);
                        break;
                    case "贰":
                        clsGM = new ClsWeightMusic(Application.StartupPath + "//Wav//贰.wav", false);
                        clsGM.PlayWav();
                        Thread.Sleep(362);
                        break;
                    case "叁":
                        clsGM = new ClsWeightMusic(Application.StartupPath + "//Wav//叁.wav", false);
                        clsGM.PlayWav();
                        Thread.Sleep(445);
                        break;
                    case "肆":
                        clsGM = new ClsWeightMusic(Application.StartupPath + "//Wav//肆.wav", false);
                        clsGM.PlayWav();
                        Thread.Sleep(354);
                        break;
                    case "伍":
                        clsGM = new ClsWeightMusic(Application.StartupPath + "//Wav//伍.wav", false);
                        clsGM.PlayWav();
                        Thread.Sleep(453);
                        break;
                    case "陆":
                        clsGM = new ClsWeightMusic(Application.StartupPath + "//Wav//陆.wav", false);
                        clsGM.PlayWav();
                        Thread.Sleep(345);
                        break;
                    case "柒":
                        clsGM = new ClsWeightMusic(Application.StartupPath + "//Wav//柒.wav", false);
                        clsGM.PlayWav();
                        Thread.Sleep(458);
                        break;
                    case "捌":
                        clsGM = new ClsWeightMusic(Application.StartupPath + "//Wav//捌.wav", false);
                        clsGM.PlayWav();
                        Thread.Sleep(355);
                        break;
                    case "玖":
                        clsGM = new ClsWeightMusic(Application.StartupPath + "//Wav//玖.wav", false);
                        clsGM.PlayWav();
                        Thread.Sleep(468);
                        break;
                    case "点":
                        clsGM = new ClsWeightMusic(Application.StartupPath + "//Wav//点.wav", false);
                        clsGM.PlayWav();
                        Thread.Sleep(300);
                        break;
                    case "拾":
                        clsGM = new ClsWeightMusic(Application.StartupPath + "//Wav//拾.wav", false);
                        clsGM.PlayWav();
                        Thread.Sleep(382);
                        break;
                    case "佰":
                        clsGM = new ClsWeightMusic(Application.StartupPath + "//Wav//佰.wav", false);
                        clsGM.PlayWav();
                        Thread.Sleep(343);
                        break;
                    case "仟":
                        clsGM = new ClsWeightMusic(Application.StartupPath + "//Wav//仟.wav", false);
                        clsGM.PlayWav();
                        Thread.Sleep(446);
                        break;
                    case "万":
                        clsGM = new ClsWeightMusic(Application.StartupPath + "//Wav//万.wav", false);
                        clsGM.PlayWav();
                        Thread.Sleep(337);
                        break;
                    case "公斤":
                        clsGM = new ClsWeightMusic(Application.StartupPath + "//Wav//公斤.wav", false);
                        clsGM.PlayWav();
                        break;
                    case "吨":
                        clsGM = new ClsWeightMusic(Application.StartupPath + "//Wav//吨.wav", false);
                        clsGM.PlayWav();
                        break;
                    case "皮重":
                        clsGM = new ClsWeightMusic(Application.StartupPath + "//Wav//皮重2.wav", false);
                        clsGM.PlayWav();
                        Thread.Sleep(797);
                        break;
                    case "毛重":
                        clsGM = new ClsWeightMusic(Application.StartupPath + "//Wav//毛重.wav", false);
                        clsGM.PlayWav();
                        Thread.Sleep(916);
                        break;
                    case "净重":
                        clsGM = new ClsWeightMusic(Application.StartupPath + "//Wav//净重.wav", false);
                        clsGM.PlayWav();
                        Thread.Sleep(674);
                        break;
                    case "扣杂":
                        clsGM = new ClsWeightMusic(Application.StartupPath + "//Wav//扣杂.wav", false);
                        clsGM.PlayWav();
                        Thread.Sleep(626);
                        break;
                    case "警报":
                        clsGM = new ClsWeightMusic(Application.StartupPath + "//Wav//警报.wav", false);
                        clsGM.PlayWav();
                        Thread.Sleep(817);
                        break;
                    case "ding":
                        clsGM = new ClsWeightMusic(Application.StartupPath + "//Wav//ding.wav", false);
                        clsGM.PlayWav();
                        Thread.Sleep(936);
                        break;
                    case "beep":
                        clsGM = new ClsWeightMusic(Application.StartupPath + "//Wav//beep.wav", false);
                        clsGM.PlayWav();
                        Thread.Sleep(237);
                        break;
                    case "Beep1":
                        clsGM = new ClsWeightMusic(Application.StartupPath + "//Wav//Beep1.wav", false);
                        clsGM.PlayWav();
                        Thread.Sleep(575);
                        break;
                    case "Beep2":
                        clsGM = new ClsWeightMusic(Application.StartupPath + "//Wav//Beep2.wav", false);
                        clsGM.PlayWav();
                        Thread.Sleep(255);
                        break;
                    case "Beep3":
                        clsGM = new ClsWeightMusic(Application.StartupPath + "//Wav//Beep3.wav", false);
                        clsGM.PlayWav();
                        Thread.Sleep(229);
                        break;
                }
            }
            catch
            {
                MessageBox.Show("语音播放文件出错,请检查安装是否正确!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                clsGM = null;
            }
        }

        /// <summary>
        /// 语音读取电子秤数值
        /// </summary>
        /// <param name="dWeight">电子秤数值</param>
        /// <param name="sWant">皮重,毛重,净重,扣杂</param>
        /// <param name="isunit">true:公斤  false:吨</param>
        public void wavSpeakWeight(decimal dWeight, string sWant, bool isunit)
        {
            string sWeight = "";
            char[] cArrWight;

            try
            {
                sWeight = moneytoUpper.ToUpper(dWeight);          //转换成大写

                if (sWant == "扣杂")
                {
                    sWeight = moneytoUpper.ToUpper2(dWeight);   //转换成大写 带小数位 
                }
               
                cArrWight = sWeight.ToCharArray();

                wavPlayString(sWant);
                for (int i = 0; i < cArrWight.Length; i++)
                {
                    wavPlayString(cArrWight[i].ToString());
                }

                if (isunit)
                {
                    wavPlayString("公斤");
                }
                else
                {
                    wavPlayString("吨");
                }
            }
            catch { }
        }

        #endregion

    }
}

使用(线程):

        private Thread threadWav;     //语音线程

        private void bLoad01_Click(object sender, EventArgs e)
        {           

                threadWav = new Thread(new ThreadStart(this.pthread1));
                threadWav.Priority = ThreadPriority.BelowNormal;
                threadWav.Start();

       }

        private void pthread1()
        {
            this.weightFun.wavSpeakWeight(decimal.Parse(this.txtGrossWeight.Text), "毛重", true);
        }

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值