使用VC++6.0+microsoft speech API 实现语音识别示例

本文演示了如何使用VC++6.0结合Microsoft Speech API进行语音识别。通过创建ISpRecoContext和ISpRecoGrammar对象,加载语音识别词典,并监听语音输入,实现将语音转化为文字的功能。用户可以通过说出特定词汇(如“Stop”)来结束识别过程。
摘要由CSDN通过智能技术生成

 

如何用C++ 来完成一道语音识别的填空题:

 

#include <windows.h>
#include 
<sapi.h>
#include 
<stdio.h>
#include 
<string.h>
#include 
<atlbase.h>
#include 
"sphelper.h"
//Copyright (c) Microsoft Corporation. All rights reserved.

inline HRESULT BlockForResult(ISpRecoContext 
* pRecoCtxt, ISpRecoResult ** ppResult)
{
    HRESULT hr 
=
 S_OK;
    CSpEvent 
event
;

    
while (SUCCEEDED(hr) &&

           SUCCEEDED(hr 
= event.GetFrom(pRecoCtxt)) &&
           hr 
== S_FALSE)
    
{
        hr 
= pRecoCtxt->
WaitForNotifyEvent(INFINITE);
    }


    
*ppResult = event.RecoResult();
    
if (*
ppResult)
    
{
        (
*ppResult)->
AddRef();
    }


    
return hr;
}


说话人识别是语音识别的一种,它是根据说话人所发的语音,确定出说话 人是谁的过程,也就是基于声音这种生物特征作为身份认证依据的识别技术。 为此,需要从各个说话人的发音中找出说话人之间的个性差异,它涉及到说话 人发音器官上的个性差异、发音声道之间的个性差异、发音习惯之间的个性差 异等。 本文主要是对说话人识别技术的两个关键部分进行了研究,下面是本文主 要做的研究工作: 本文设计的说话人识别系统是与文本无关的说话人识别系统。为了较好地 提取语音特征参数,首先要获得有效的语音段,本文采用的是基于短时能零差 分法的端点检测方法。本文对比了传统的双门限端点检测算法和短时能零差分 法的端点检测方法对同一语音端点检测的结果。实验结果发现,短时能零差分 法的端点检测方法能够更好的检测到语音起始点和终止点。 本文为克服传统的 MFCC 特征提取算法特征分量之间含有冗余信息(即对 识别性能贡献不大的特征分量)的影响,而提出了主分量分析法(PCA)与传统 MFCC 特征提取法相结合的算法,本算法经 PCA 降维,特征信息的损失最少, 在确保识别性能的同时,后续阶段的计算量将大大减少。并与传统的 MFCC 特 征提取算法进行了实验对比。实验结果表明,本系统识别率高,语音段长度短,容易采集,计算速度快。 本文所设计的说话人识别系统是在 Windows XP 系统的 Visual C++6.0 开发 平台下实现的,Visual C++6.0 提供的高度可视化的应用程序开发工具和 MFC类库,可使应用程序的开发变得简单。 实验结果表明,由于本文采用了短时能零差分法的端点检测算法和主分量 分析法(PCA)与传统 MFCC 特征提结合的特征提取算法,因此本文所建立的 说话人识别系统不仅具有一定的识别率,而其计算速度非常快,具有较好的实 时处理性能。
评论 65
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尹成

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值