加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

门诊叫号系统系列-1.语音叫号 .net c#

发布时间:2020-12-16 01:22:30 所属栏目:百科 来源:网络整理
导读:?最近收到一个需求,朋友诊室需要做到门诊叫号,流程如下:病人选择医生-刷身份证排队-医生点击病人姓名叫号。 经过团队的努力,一个简易的门诊叫号系统已经完成。现在把各个功能记录下来,方便以后查看。 1.语音叫号 叫号的DLL:DotNetSpeech.dll 测试代码

?最近收到一个需求,朋友诊室需要做到门诊叫号,流程如下:病人选择医生-刷身份证排队-医生点击病人姓名叫号。

经过团队的努力,一个简易的门诊叫号系统已经完成。现在把各个功能记录下来,方便以后查看。

1.语音叫号

叫号的DLL:DotNetSpeech.dll

测试代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

using DotNetSpeech;

namespace voice
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        /// <summary>
        /// 语音列表
        /// </summary>
        List<SpVoice> _voice = new List<SpVoice>();
        private void btnSound_Click(object sender,EventArgs e)
        {            
            this.AddVoice(txtVoice1.Text,int.Parse(txtVolume1.Text),int.Parse(txtRate1.Text));
            this.AddVoice(txtVoice2.Text,int.Parse(txtVolume2.Text),int.Parse(txtRate2.Text));
            for (int i = 0; i < _voice.Count(); i++)
            {
                try
                {
                    //根据文本叫号
                    _voice[i].Speak(this.txtVoiceText.Text,SpeechVoiceSpeakFlags.SVSFlagsAsync);
                }
                catch (Exception ex)
                {
                    txtError.Text = DateTime.Now.ToString() + ex.ToString() + " " + txtError.Text;
                }
            }
        }

        /// <summary>
        /// 增加语音库
        /// </summary>
        /// <param name="p_Name">语音库名称</param>
        /// <param name="p_Volume">音量</param>
        /// <param name="p_Rate">音速</param>
        public void AddVoice(string p_Name,int? p_Volume,int? p_Rate)
        {
            try
            {
                for (int i = 0; i < _voice.Count(); i++)
                {
                    if (_voice[i].Voice.GetAttribute("name") == p_Name)
                    {
                        _voice[i].Rate = p_Rate == null ? -3 : p_Rate.Value;
                        if (p_Volume != null) _voice[i].Volume = p_Volume.Value;
                        return;
                    }
                }
                SpVoice voice = new SpVoice();
                voice.Voice = voice.GetVoices(string.Format("name={0}",p_Name),"").Item(0);
                voice.Rate = p_Rate == null ? -3 : p_Rate.Value;
                if (p_Volume != null) voice.Volume = p_Volume.Value;
                _voice.Add(voice);
            }
            catch(Exception ex) {
                txtError.Text = DateTime.Now.ToString()+ex.ToString() + " " + txtError.Text;
            }
        }
    }
}

  测试界面如下:

?

注意事项:采用DotNetSpeech.dll 是不支持64位的,启动的程序要编译为X86,DLL编译需要ANYCPU,很奇怪,这个找不到原因

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读