基于C#實(shí)現(xiàn)語(yǔ)音識(shí)別功能詳解
在.NET4.0中,我可以借助System.Speech組件讓電腦來(lái)識(shí)別我們的聲音。

以上,當(dāng)我說(shuō)"name",顯示"Darren",我說(shuō)"age",顯示"永遠(yuǎn)21"。如何做呢?
首先要開(kāi)啟電腦的語(yǔ)音識(shí)別功能。
右鍵電腦右下方的揚(yáng)聲器,選擇"錄音設(shè)備"。
點(diǎn)擊默認(rèn)的"麥克風(fēng)",再點(diǎn)擊左下角的"配置"按鈕。


在VS中創(chuàng)建一個(gè)窗體應(yīng)用程序,界面上有一個(gè)RichTextBox和2個(gè)Button。
添加System.Speech的引用。
(PS:強(qiáng)調(diào)一下如果不打開(kāi)語(yǔ)音識(shí)別功能,啟動(dòng)程序會(huì)報(bào)錯(cuò):在此系統(tǒng)上語(yǔ)音識(shí)別不可用。找不到 SAPI 和語(yǔ)音識(shí)別引擎。)
編寫(xiě)如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Speech.Recognition;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsForms
{
public partial class Form1 : Form
{
SpeechRecognitionEngine recEngine = new SpeechRecognitionEngine();
public Form1()
{
InitializeComponent();
}
private void btnEnable_Click(object sender, EventArgs e)
{
recEngine.RecognizeAsync(RecognizeMode.Multiple);
btnDisable.Enabled = true;
}
private void Form1_Load(object sender, EventArgs e)
{
Choices preCmd = new Choices();
preCmd.Add(new string[] { "name", "age" });
GrammarBuilder gb = new GrammarBuilder();
gb.Append(preCmd);
Grammar gr = new Grammar(gb);
recEngine.LoadGrammarAsync(gr);
recEngine.SetInputToDefaultAudioDevice();
recEngine.SpeechHypothesized += RecEngine_SpeechHypothesized;
}
private void RecEngine_SpeechHypothesized(object sender, SpeechHypothesizedEventArgs e)
{
switch (e.Result.Text)
{
case "name":
txtList.Text += "\nDarren";
break;
case "age":
txtList.Text += "\n永遠(yuǎn)21";
break;
default:
break;
}
}
private void btnDisable_Click(object sender, EventArgs e)
{
recEngine.RecognizeAsyncStop();
btnDisable.Enabled = false;
}
}
}當(dāng)然中文也是可以識(shí)別的,項(xiàng)目很有意思,大家可以調(diào)用語(yǔ)音播放進(jìn)行播放回復(fù)內(nèi)容。
到此這篇關(guān)于基于C#實(shí)現(xiàn)語(yǔ)音識(shí)別功能詳解的文章就介紹到這了,更多相關(guān)C#語(yǔ)音識(shí)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#使用RegNotifyChangeKeyValue監(jiān)聽(tīng)注冊(cè)表更改的方法小結(jié)
RegNotifyChangeKeyValue的最后一個(gè)參數(shù)傳遞false,表示以同步的方式監(jiān)聽(tīng),這篇文章主要介紹了C#使用RegNotifyChangeKeyValue監(jiān)聽(tīng)注冊(cè)表更改的方法小結(jié),需要的朋友可以參考下2024-06-06
C#實(shí)現(xiàn)自定義線程池實(shí)例代碼
這篇文章介紹了C#實(shí)現(xiàn)自定義線程池的實(shí)例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07
C#基礎(chǔ)學(xué)習(xí)系列之Attribute和反射詳解
大家在使用Attribute的時(shí)候大多需要用到反射,所以放在一起。下面這篇文章主要給大家介紹了關(guān)于C#基礎(chǔ)學(xué)習(xí)系列之Attribute和反射的相關(guān)資料,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09
WPF 自定義雷達(dá)圖開(kāi)發(fā)實(shí)例教程
這篇文章主要介紹了WPF 自定義雷達(dá)圖開(kāi)發(fā)實(shí)例教程,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09
C#設(shè)置PDF表單不可編輯以及提取表單數(shù)據(jù)的操作
PDF表單是PDF中的可編輯區(qū)域,允許用戶填寫(xiě)指定信息,當(dāng)表單填寫(xiě)完成后,有時(shí)候我們可能需要將其設(shè)置為不可編輯,以保護(hù)表單內(nèi)容的完整性和可靠性,本文將給大家介紹C#設(shè)置PDF表單不可編輯以及提取表單數(shù)據(jù)的操作,需要的朋友可以參考下2024-06-06
C#使用DateAndTime.DateDiff實(shí)現(xiàn)計(jì)算年齡
這篇文章主要為大家詳細(xì)介紹了C#如何使用DateAndTime.DateDiff實(shí)現(xiàn)根據(jù)生日計(jì)算年齡,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2024-01-01

