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

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


在VS中創(chuàng)建一個窗體應(yīng)用程序,界面上有一個RichTextBox和2個Button。
添加System.Speech的引用。
(PS:強(qiáng)調(diào)一下如果不打開語音識別功能,啟動程序會報(bào)錯:在此系統(tǒng)上語音識別不可用。找不到 SAPI 和語音識別引擎。)
編寫如下:
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)然中文也是可以識別的,項(xiàng)目很有意思,大家可以調(diào)用語音播放進(jìn)行播放回復(fù)內(nèi)容。
到此這篇關(guān)于基于C#實(shí)現(xiàn)語音識別功能詳解的文章就介紹到這了,更多相關(guān)C#語音識別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Unity Sockect實(shí)現(xiàn)畫面實(shí)時傳輸案例原理解析
Socket是比較常用的一種通信方式,本文通過案例給大家介紹Unity Sockect實(shí)現(xiàn)畫面實(shí)時傳輸功能,感興趣的朋友一起看看吧2021-08-08
C#執(zhí)行存儲過程并將結(jié)果填充到GridView的方法
這篇文章主要介紹了C#執(zhí)行存儲過程并將結(jié)果填充到GridView的方法,結(jié)合實(shí)例形式分析了C#存儲過程操作及GridView控件相關(guān)操作技巧,需要的朋友可以參考下2017-02-02
C#實(shí)現(xiàn)JSON和對象之間互相轉(zhuǎn)換功能示例
這篇文章主要介紹了C#實(shí)現(xiàn)JSON和對象之間互相轉(zhuǎn)換功能,結(jié)合實(shí)例形式較為詳細(xì)的分析了C#實(shí)現(xiàn)對象與json之間相互轉(zhuǎn)換的操作技巧,需要的朋友可以參考下2017-09-09
C#無損高質(zhì)量壓縮圖片實(shí)現(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了C#無損高質(zhì)量壓縮圖片的實(shí)現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05
Windows下C#的GUI窗口程序中實(shí)現(xiàn)調(diào)用Google Map的實(shí)例
這篇文章主要介紹了Windows下C#的GUI窗口程序中實(shí)現(xiàn)調(diào)用Google Map的實(shí)例,如果只想調(diào)用瀏覽器打開網(wǎng)頁的話可以看文章最后的方法,需要的朋友可以參考下2016-04-04
WPF使用WrapPanel實(shí)現(xiàn)虛擬化效果
這篇文章主要為大家詳細(xì)介紹了如何利用WPF WrapPanel實(shí)現(xiàn)虛擬化效果,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)或工作有一定幫助,感興趣的小伙伴可以了解一下2022-09-09

