《MFC添加语音功能》

MFC一般提示都是用消息对话框来处理,同时我们也可以加上语音播报功能。语音播报我们可以调用微软自带的Microsoft Speech API (SAPI) 5.4,它里面有语音识别,还有有一个Text-to-Speech 引擎,可以将文本转化为语音,我们用的就是这个。

下面我们创建一个简单的MFC例子来演示这玩意是怎么用的

1、创建一个对话框取名叫“Speak”,添加一个按钮,修改为“语音播报”

2、添加头文件,找到下面这两个头文件,将它们和源文件放在一块,然后转到解决方案,项目名称“Speak”右键选择添加"现有项",然后选择上面那两个头文件,点确定,头文件就添加完了

 

3、包含头文件,创建对象

#include "TextSpeaker.h"

gds::CTextSpeaker m_TextSpeak;

4、双击“”语音播报“”按钮,添加控件响应函数,添加如下代码:

void CSpeakDlg::OnBnClickedButton1()
{
	//< TODO: 在此添加控件通知处理程序代码
	m_TextSpeak.Speak(_T("Hello World!"));
}

然后运行程序,点击按钮,就会出现一个女声美式发音。

5、如果报以下错误,那就是属性选择的字符集的问题,将TextSpeaker.h里面代码进行修改:

void Speak(const CString &text)
    {
        //
        // Input text must not be empty
        //
        if (text.IsEmpty())
        {
            ATLTRACE(TEXT("Empty text passed to CTextSpeaker::Speak().\n"));
            AtlThrow(E_INVALIDARG);
        }


        //
        // Speak input text
        //
        ULONG streamNumber;
		//USES_CONVERSION; 
		//LPCWSTR pwcStr = A2CW((LPCSTR)text); 
        HRESULT hr = m_tts->Speak(text, SPF_IS_NOT_XML | SPF_ASYNC | SPF_PURGEBEFORESPEAK, &streamNumber);
        if (FAILED(hr))
        {
            ATLTRACE(TEXT("Speak failed.\n"));
            AtlThrow(hr);
        }
    }

完整代码


完整Demo链接:https://download.csdn.net/download/mars_xiaolei/10666223

百度网盘链接:https://pan.baidu.com/s/1WjivKqte1qSvBYcumhaISg 
提取码:gxje 

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 21
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值