关于qt上实现基于百度的语音识别

目录

1.熟悉大概框架

2.发送和接受数据

处理流程:1.通过TCP协议向服务器发送id,secret,其中一个服务器会返回一个access_token(其有效期为1个月)2.再向另一个服务器发送音频文件access_token,并返回语音识别结果,如上图所示

3.交叉编译,移植到开发板


1.熟悉大概框架

首先我们要知道,要想从百度服务器上拿到语音识别的json数据,大概分为4步

 由图可知,我们要先从https://ai.baidu.com/上拿到相应的api id和id secret,自己在官网上创建账号申请免费额度就行了。

2.发送和接受数据

处理流程:1.通过TCP协议向服务器发送id,secret,其中一个服务器会返回一个access_token(其有效期为1个月)2.再向另一个服务器发送音频文件access_token,并返回语音识别结果,如上图所示

speech.h

这个头文件里面包装了相关的url

其中baiduspeechurl和baidutokenurl都是一样的,只有client_id和client_secret是通过申请得到的,每个人都不一样

speech.c

该函数的主要工作是将头部信息和url封装好,再通过调用http类的方法拿到应答数据,并对应答数据进行json数据处理,其中调用了2次http中的post_sync,第一次调用是为了拿到access_token,第二次调用是将拿到的access_token和本地的语音文件包装成requestdata发送给服务器从而得到语音识别的数据.

 

 http.c

该函数的功能主要是进行http通信,将拿到的封装好的请求数据发送给服务器从而得到应答数据

3.交叉编译,移植到开发板

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!基于Qt框架实现离线中文语音合成,可以使用讯飞离线语音合成SDK。具体步骤如下: 1. 在科大讯飞官网注册账号,申请离线语音合成SDK的授权。 2. 在QT项目中添加SDK的头文件和库文件。 3. 调用SDK提供的接口,实现文字转语音的功能。 以下是一个简单的示例代码: ```c++ #include "qtts.h" #include "msp_cmn.h" #include "msp_errors.h" // 初始化语音合成 int InitTTS() { int ret = MSP_SUCCESS; const char* login_params = "appid = APPID, work_dir = ."; // 替换APPID为自己的应用ID ret = MSPLogin(nullptr, nullptr, login_params); if (MSP_SUCCESS != ret) { printf("MSPLogin failed, error code: %d.\n", ret); return ret; } // 设置语音合成参数 TTSConfig config = DEFAULT_TTS_CONFIG; config.vcn = "xiaoyan"; // 设置发音人为小燕 config.speed = 50; // 设置语速为50 config.volume = 50; // 设置音量为50 config.pitch = 50; // 设置音高为50 const char* session_begin_params = "voice_name = xiaoyan, text_encoding = UTF8, sample_rate = 16000, speed = 50, volume = 50, pitch = 50"; // 加载离线语音合成引擎 const char* res_path = "fo|res/iat/common.jet;fo|res/tts/xiaoyan.jet"; // 替换为自己下载的离线资源文件路径 ret = MSPUploadData("tts", res_path, nullptr, 0); if (MSP_SUCCESS != ret) { printf("MSPUploadData failed, error code: %d.\n", ret); return ret; } // 创建语音合成句柄 QTTSInit(); return MSP_SUCCESS; } // 文字转语音 int TextToSpeech(const char* text, const char* filename) { int ret = MSP_SUCCESS; const char* session_begin_params = "voice_name = xiaoyan, text_encoding = UTF8, sample_rate = 16000, speed = 50, volume = 50, pitch = 50"; const char* audio_format = "wav"; // 创建语音合成句柄 int synth_status = MSP_TTS_FLAG_STILL_HAVE_DATA; QTTSGetParam(nullptr, TTS_PARAM_SESSION_BEGIN, session_begin_params); const char* audio_data; unsigned int audio_len; FILE* fp = fopen(filename, "wb"); do { audio_data = QTTSSynthText(text, strlen(text), &audio_len, &synth_status, &ret); if (nullptr != audio_data) { fwrite(audio_data, audio_len, 1, fp); } } while (MSP_TTS_FLAG_STILL_HAVE_DATA == synth_status); fclose(fp); // 释放语音合成句柄 QTTSGetParam(nullptr, TTS_PARAM_SESSION_END, nullptr); return MSP_SUCCESS; } // 关闭语音合成 void CloseTTS() { QTTSFini(); MSPLogout(); } // 测试 int main(int argc, char** argv) { // 初始化语音合成 InitTTS(); // 文字转语音 TextToSpeech("科大讯飞,让世界聆听我们的声音。", "output.wav"); // 关闭语音合成 CloseTTS(); return 0; } ``` 需要将代码中的APPID替换为自己的应用ID,并将离线资源文件路径替换为自己下载的离线资源文件路径。同时,需要将SDK的头文件和库文件添加到QT项目中,并在项目中包含Qt5Core.dll、msc.dll等动态链接库文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值