当前位置:首页 > 代码 > 正文

中文语音识别开源代码(中文语音识别开源代码是什么)

admin 发布:2022-12-31 23:45 57


本篇文章给大家谈谈中文语音识别开源代码,以及中文语音识别开源代码是什么对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

c#中使用什么可以把语音转换成文本呀,就是对着电脑麦克说话,然后电脑作出回答

speechlib语音识别 2011-07-20 15:06

C# 实现中文发音或中文语音识别

在.net中,对英文语音有较好的支持,但是对中文语音的支持还没有加入进来,我们要想实现中文发音或中文语音识别,必需先安装微软的Speech Application SDK(SASDK),

它的最新版本是 SAPI 5.1 他能够识别中、日、英三种语言,你可以在这里下载:,

需要安装这两个文件Speech SDK 5.1和5.1 Language Pack,其中5.1 Language Pack可以选择安装支持的语言。

安装好以后,我们就可以开始进行语音程序的开发了,当然,在这之前我们需要把SAPI.dll通过如下图所示添加到引用中下面我们设计一个能够朗读中英文混合语言的类:

我们将用单例模式实现该类,类的代码如下,我们将详细解释:

public class Speach {

private static Speach _Instance = null ;

private SpeechLib.SpVoiceClass voice =null;

private Speach()

{

BuildSpeach() ;

}

public static Speach instance()

{

if (_Instance == null)

_Instance = new Speach() ;

return _Instance ;

}

private void SetChinaVoice()

{

voice.Voice = voice.GetVoices(string.Empty,string.Empty).Item(0) ;

}

private void SetEnglishVoice()

{

voice.Voice = voice.GetVoices(string.Empty,string.Empty).Item(1) ;

}

private void SpeakChina(string strSpeak)

{

SetChinaVoice() ;

Speak(strSpeak) ;

}

private void SpeakEnglishi(string strSpeak)

{

SetEnglishVoice() ;

Speak(strSpeak) ;

}

public void AnalyseSpeak(string strSpeak)

{

int iCbeg = 0 ;

int iEbeg = 0 ;

bool IsChina = true ;

for(int i=0;istrSpeak.Length;i++)

{

char chr = strSpeak ;

if (IsChina)

{

if (chr=122chr=65)

{

int iLen = i - iCbeg ;

string strValue = strSpeak.Substring(iCbeg,iLen) ;

SpeakChina(strValue) ;

iEbeg = i ;

IsChina = false ;

}

}

else

{

if (chr122||chr65)

{

int iLen = i - iEbeg ;

string strValue = strSpeak.Substring(iEbeg,iLen) ;

this.SpeakEnglishi(strValue) ;

iCbeg = i ;

IsChina = true ;

}

}

}//end for

if (IsChina)

{

int iLen = strSpeak.Length - iCbeg ;

string strValue = strSpeak.Substring(iCbeg,iLen) ;

SpeakChina(strValue) ;

}

else

{

int iLen = strSpeak.Length - iEbeg ;

string strValue = strSpeak.Substring(iEbeg,iLen) ;

SpeakEnglishi(strValue) ;

}

}

private void BuildSpeach()

{

if (voice == null)

voice = new SpVoiceClass() ;

}

public int Volume

{

get

{

return voice.Volume ;

}

set

{

voice.SetVolume((ushort)(value)) ;

}

}

public int Rate

{

get

{

return voice.Rate ;

}

set

{

voice.SetRate(value) ;

}

}

private void Speak(string strSpeack)

{

try

{

voice.Speak(strSpeack,SpeechVoiceSpeakFlags.SVSFlagsAsync) ;

}

catch(Exception err)

{

throw(new Exception("发生一个错误:"+err.Message)) ;

}

}

public void Stop()

{

voice.Speak(string.Empty,SpeechLib.SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak) ;

}

public void Pause()

{

voice.Pause() ;

}

public void Continue()

{

voice.Resume() ;

}

}//end class

在 private SpeechLib.SpVoiceClass voice =null;这里,我们定义个一个用来发音的类,并且在第一次调用该类时,对它用BuildSpeach方法进行了初始化。

我们还定义了两个属性Volume和Rate,能够设置音量和语速。

我们知道,SpVoiceClass 有一个Speak方法,我们发音主要就是给他传递一个字符串,它负责读出该字符串,如下所示。

private void Speak(string strSpeack)

{

try

{

voice.Speak(strSpeack,SpeechVoiceSpeakFlags.SVSFlagsAsync) ;

}

catch(Exception err)

{

throw(new Exception("发生一个错误:"+err.Message)) ;

}

}

其中SpeechVoiceSpeakFlags.SVSFlagsAsync表示异步发音。

接上篇《中文语音识别技术在c#中的应用(一)》………但是,这个方法本身并不知道你给的字符串是什么语言,所以需要我们它这个字符串用什么语言读出。SpVoiceClass 类的Voice 属性就是用来设置语种的,我们可以通过SpVoiceClass 的GetVoices方法得到所有的语种列表,然后在根据参数选择相应的语种,比如设置语种为汉语如下所示:

private void SetChinaVoice()

{

voice.Voice = voice.GetVoices(string.Empty,string.Empty).Item(0) ;

}

0表示是汉用,1234都表示英语,就是口音不同。

这样,我们就设置了语种,如果结合发音方法,我们就可以设计出一个只发汉语语音的方法。

private void SpeakChina(string strSpeak)

{

SetChinaVoice() ;

Speak(strSpeak) ;

}

只发英语语音的方法也是类似的,上面程序里有。

对于一段中英文混合的语言,我们让程序读出混合语音的方法就是:编程把这段语言的中英文分开,对于中文调用SpeakChina方法,英文调用SpeakEnglishi方法;至于怎样判断一个字符是英文还是中文,我采用的是判断asc码的方法,具体的类方法是通过AnalyseSpeak实现的。

这样,对于一段中英文混合文字,我们只需把它作为参数传递给AnalyseSpeak就可以了,他能够完成中英文的混合发音。

当然,对于发音的暂定、继续、停止等操作,上面也给出了简单的方法调用,很容易明白。

下面简单介绍一下中文语音识别的方法:

先把该语音识别的类源代码贴在下面,然后再做说明:

public class SpRecognition

{

private static SpRecognition _Instance = null ;

private SpeechLib.ISpeechRecoGrammar isrg ;

private SpeechLib.SpSharedRecoContextClass ssrContex =null;

private System.Windows.Forms.Control cDisplay ;

private SpRecognition()

{

ssrContex = new SpSharedRecoContextClass() ;

isrg = ssrContex.CreateGrammar(1) ;

SpeechLib._ISpeechRecoContextEvents_RecognitionEventHandler recHandle =

new _ISpeechRecoContextEvents_RecognitionEventHandler(ContexRecognition) ;

ssrContex.Recognition += recHandle ;

}

public void BeginRec(Control tbResult)

{

isrg.DictationSetState(SpeechRuleState.SGDSActive) ;

cDisplay = tbResult ;

}

public static SpRecognition instance()

{

if (_Instance == null)

_Instance = new SpRecognition() ;

return _Instance ;

}

public void CloseRec()

{

isrg.DictationSetState(SpeechRuleState.SGDSInactive) ;

}

private void ContexRecognition(int iIndex,object obj,SpeechLib.SpeechRecognitionType type,SpeechLib.ISpeechRecoResult result)

{

cDisplay.Text += result.PhraseInfo.GetText(0,-1,true) ;

}

}

我们定义了ssrContex 和isrg为语音识别的上下文和语法,通过设置isrg的DictationSetState方法,我们可以开始或结束识别,在上面的程序中是BeginRec和CloseRec方法。cDisplay 是我们用来输出识别结果的地方,为了能够在大部分控件上都可以显示结果,我用了一个Control 类来定义它。当然,每次语音识别后都会触发ISpeechRecoContextEvents_RecognitionEventHandler 事件,我们定义了一个这样的方法ContexRecognition来响应事件,并且在这个方法里输出识别结果。

这样,中文语音处理的一些最基本的问题就有了一个简单的解决方法,当然,这种方法还有很多不完善的地方,希望大家多提出批评意见,共同提高。

如何用python调用百度语音识别

1、首先需要打开百度AI语音系统,开始编写代码,如图所示,编写好回车。

2、然后接下来再试一下16k.pcm的音频,开始编写成功回车,如图所示的编写。

3、最后,查看音频c的属性,可以看到音频持续28秒,这样就是用python调用百度语音识别成功解决问题。

vb.net怎么做中文语音识别程序

这就要调用API函数了

给你代码吧

记得给点分啊

Private

Const

KeysM

=

H8000

Private

Declare

Function

GetAsyncKeyState

Lib

"user32"

(ByVal

vKey

As

Long)

As

Integer

Private

Sub

TextBox1_KeyDown(ByVal

sender

As

Object,

ByVal

e

As

System.Windows.Forms.KeyEventArgs)

Handles

TextBox1.KeyDown

Me.Text

=

e.KeyValue

If

e.KeyValue

=

Keys.ShiftKey

And

GetAsyncKeyState(160)

And

KeysM

Then

MsgBox("你按的是左SHIFT")

ElseIf

e.KeyValue

=

Keys.ShiftKey

And

GetAsyncKeyState(161)

And

KeysM

Then

MsgBox("你按的是右SHIFT")

End

If

End

Sub

语音识别开放化开发平台有哪些

语音识别开发平台有很多,具体总结如下:

1.商业化的语音交互平台

1)微软Speech API

微软的Speech API(简称为SAPI)是微软推出的包含语音识别(SR)和语音合成(SS)引擎的应用编程接口(API),在Windows下应用 广泛。目前,微软已发布了多个SAPI版本(最新的是SAPI 5.4版),这些版本要么作为于Speech SDK开发包发布,要么直接被包含在windows 操作系统中发布。SAPI支持多种语言的识别和朗读,包括英文、中文、日文等。

2).IBM viaVoice

IBM是较早开始语音识别方面的研究的机构之一,早在20世纪50年代末期,IBM就开始了语音识别的研究,计算机被设计用来检测特定的语言 模式并得出声音和它对应的文字之间的统计相关性。1999年,IBM发布了VoiceType的一个免费版。2003年,IBM授权ScanSoft公司拥有基于ViaVoice的桌面产品的全球独家经销权,随后ScanSoft与Nuance合并,如今viaVoice早已淡出人们的视线,取而代之的是Nuance。

3)Nuance

Nuance通讯是一家跨国计算机软件技术公司,总部设在美国马萨诸塞州伯灵顿,主要提供语音和图像方面的解决方案和应用。目前的业务集中 在服务器和嵌入式语音识别,电话转向系统,自动电话目录服务等。Nuance语音技术除了语音识别技术外,还包扩语音合成、声纹识别等技术。世界语音技术市场,有超过80%的语音识别是采用Nuance识别引擎技术, 其名下有超过1000个专利技术,公司研发的语音产品可以支持超过50种语言,在全球拥有超过20亿用户。苹果的iPhone 4S的Siri语音识别中就应用了Nuance的语音识别服务。

4)科大讯飞

科大讯飞作为中国最大的智能语音技术提供商,在智能语音技术领域有着长期的研究积累,并在中文语音合成、语音识别、口语评测等多项 技术上拥有国际领先的成果。占有中文语音技术市场60%以上市场份额,语音合成产品市场份额达到70%以上。

5)其他

其他的影响力较大商用语音交互平台有谷歌的语音搜索(Google Voice Search),百度和搜狗的语音输入法等等。

2.开源的语音交互平台

1)CMU-Sphinx

CMU-Sphinx也简称为Sphinx(狮身人面像),是卡内基 - 梅隆大学( Carnegie Mellon University,CMU)开发的一款开源的语音识别系统, 它包括一系列的语音识别器和声学模型训练工具。最早的Sphinx-I 由@李开复 (Kai-Fu Lee)于1987年左右开发,使用了固定的HMM模型(含3个大小为256的codebook),它被号称为第一个高性能的连续语音识别 系统(在Resource Management数据库上准确率达到了90%+)。 最新的Sphinx语音识别系统包含如下软件包:

 Pocketsphinx — recognizer library written in C.

 Sphinxbase — support library required by Pocketsphinx

 Sphinx4 — adjustable, modifiable recognizer written in Java

 CMUclmtk — language model tools

 Sphinxtrain — acoustic model training tools

这些软件包的可执行文件和源代码在sourceforge上都可以免费下载得到。

2)HTK

HTK是Hidden Markov Model Toolkit(隐马尔科夫模型工具包)的简称,HTK主要用于语音识别研究,最初是由剑桥大学工程学院(Cambridge University Engineering Department ,CUED)的机器智能实验室(前语音视觉及机器人组) 于1989年开发的,它被用来构建CUED的大词汇量的语音识别系统。HTK的最新版本是09年发布的3.4.1版,关于HTK的实现原理和各个工具的使用方法可以参看HTK的文档HTKBook。

3)Julius

Julius是一个高性能、双通道的大词汇量连续语音识别(large vocabulary continues speech recognition,LVCSR)的开源项目, 适合于广大的研究人员和开发人员。它使用3-gram及上下文相关的HMM,在当前的PC机上能够实现实时的语音识别,单词量达到60k个。

4)RWTH ASR

该工具箱包含最新的自动语音识别技术的算法实现,它由 RWTH Aachen 大学的Human Language Technology and Pattern Recognition Group 开发。RWTH ASR工具箱包括声学模型的构建、解析器等重要部分,还包括说话人自适应组件、说话人自适应训练组件、非监督训练组件、个性化 训练和单词词根处理组件等。

求语音识别的源代码,要求是用C#或C语言编写,能够识别一些基本的汉语发音

首先你要引用 DotNetSpeech

然后

创建SpeechRecognitionEngine 对象

下面的代码可以让系统获取语音并且识别

SRE = new SpeechRecognitionEngine(new System.Globalization.CultureInfo("zh-CN"));//中文

SRE.LoadGrammar(new DictationGrammar());//所有语言

SRE.SpeechRecognized += new EventHandlerSpeechRecognizedEventArgs(SRE_SpeechRecognized);//系统接受后的事件

SRE.SetInputToDefaultAudioDevice();//设置默认输入设备

微软MSDN里面有详细的介绍,望采纳。

C#如何开发语音识别,最好有例子

语音识别小程序,调用了windows的识别组件。精简了一些代码,算是比较简单易懂的一个语音识别类。

开发测试环境win7,VS2008。如果有其它环境中的,欢迎补充。

SRecognition.cs

using System;

using System.Speech.Recognition;

using System.Globalization;

using System.Windows.Forms;

namespace NingTao

{

public class SRecognition

{

public SpeechRecognitionEngine recognizer = null;//语音识别引擎

public DictationGrammar dictationGrammar = null; //自然语法

public System.Windows.Forms.Control cDisplay; //显示控件

public SRecognition(string[] fg) //创建关键词语列表

{

CultureInfo myCIintl = new CultureInfo("zh-CN");

foreach (RecognizerInfo config in SpeechRecognitionEngine.InstalledRecognizers())//获取所有语音引擎

{

if (config.Culture.Equals(myCIintl) config.Id == "MS-2052-80-DESK")

{

recognizer = new SpeechRecognitionEngine(config);

break;

}//选择识别引擎

}

if (recognizer != null)

{

InitializeSpeechRecognitionEngine(fg);//初始化语音识别引擎

dictationGrammar = new DictationGrammar();

}

else

{

MessageBox.Show("创建语音识别失败");

}

}

private void InitializeSpeechRecognitionEngine(string[] fg)

{

recognizer.SetInputToDefaultAudioDevice();//选择默认的音频输入设备

Grammar customGrammar = CreateCustomGrammar(fg);

//根据关键字数组建立语法

recognizer.UnloadAllGrammars();

recognizer.LoadGrammar(customGrammar);

//加载语法

recognizer.SpeechRecognized += new EventHandlerSpeechRecognizedEventArgs(recognizer_SpeechRecognized);

//recognizer.SpeechHypothesized += new EventHandler SpeechHypothesizedEventArgs(recognizer_SpeechHypothesized);

}

public void BeginRec(Control tbResult)//关联窗口控件

{

TurnSpeechRecognitionOn();

TurnDictationOn();

cDisplay = tbResult;

}

public void over()//停止语音识别引擎

{

TurnSpeechRecognitionOff();

}

public virtual Grammar CreateCustomGrammar(string[] fg) //创造自定义语法

{

GrammarBuilder grammarBuilder = new GrammarBuilder();

grammarBuilder.Append(new Choices(fg));

return new Grammar(grammarBuilder);

}

private void TurnSpeechRecognitionOn()//启动语音识别函数

{

if (recognizer != null)

{

recognizer.RecognizeAsync(RecognizeMode.Multiple);

//识别模式为连续识别

}

else

{

MessageBox.Show("创建语音识别失败");

}

}

private void TurnSpeechRecognitionOff()//关闭语音识别函数

{

if (recognizer != null)

{

recognizer.RecognizeAsyncStop();

TurnDictationOff();

}

else

{

MessageBox.Show("创建语音识别失败");

}

}

private void recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)

{

//识别出结果完成的动作,通常把识别结果传给某一个控件

string text = e.Result.Text;

cDisplay.Text += text;

}

private void TurnDictationOn()

{

if (recognizer != null)

{

recognizer.LoadGrammar(dictationGrammar);

//加载自然语法

}

else

{

MessageBox.Show("创建语音识别失败");

}

}

private void TurnDictationOff()

{

if (dictationGrammar != null)

{

recognizer.UnloadGrammar(dictationGrammar);

//卸载自然语法

}

else

{

MessageBox.Show("创建语音识别失败");

}

}

}

}

form调用,其中2个按钮(开始,停止),1个文本框(识别结果)

using System;

using System.Windows.Forms;

namespace NingTao

{

public partial class Form1 : Form

{

private SRecognition sr;

public Form1()

{

InitializeComponent();

string[] fg = { "东方", "西方", "南方", "北方" };

sr = new SRecognition(fg);

button2.Enabled = false;

}

private void button1_Click(object sender, EventArgs e)

{

sr.BeginRec(textBox1);

button1.Enabled = false;

button2.Enabled = true;

}

private void button2_Click(object sender, EventArgs e)

{

sr.over();

button1.Enabled = true;

button2.Enabled = false;

}

}

}

关于中文语音识别开源代码和中文语音识别开源代码是什么的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/33064.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载