1. 程式人生 > WINDOWS開發 >DotNetSpeech門診叫號系統系列-1.語音叫號 .net c#

DotNetSpeech門診叫號系統系列-1.語音叫號 .net c#

最近收到一個需求,朋友診室需要做到門診叫號,流程如下:病人選擇醫生-刷身份證排隊-醫生點選病人姓名叫號。

經過團隊的努力,一個簡易的門診叫號系統已經完成。現在把各個功能記錄下來,方便以後檢視。

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,很奇怪,這個找不到原因