如何用matlab调用百度云语音识别API

本文介绍了如何使用matlab调用百度语音识别的API接口,实现语音识别。

  • 首先进入百度云的官网注册登录百度云官网
  • 登陆之后进入管理控制台,如下图所示
    在这里插入图片描述
  • 接着创建一个语音识别的应用,就选默认的就好了
    在这里插入图片描述

官方技术文档可以参考

  • 接着我们来看使用方法,整个流程和我们之前的人脸识别大致相同,在调用api之前我们需要获得acess_token,这个可以通过我们的api key和secret key获得,这个可以在应用管理里面看到,如下图:
    在这里插入图片描述
    在这里插入图片描述
  • 用代码总结起来就是
api_key = '你的 api key';
secret_key = '你的secret key';
url_token = ['https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=',api_key,'&client_secret=',secret_key];
token = webread(url_token);
token = token.access_token; % 至此,获得了token

效果如下,但是要注意token的有效期是1个月,就是这个token在一个月内是不会变的,这段时间不用重复请求,直接用就好在这里插入图片描述


  • 接下来处理音频,准备上传
    • 注意音频我这里以 .wav文件为例,官方支持pcm 或者 wav 或者 amr,但是采样率必须为16000,单声道。同时要将音频转换成字符串,进行一个编码,这里需要用到一个常用的,但是matlab自身没有的函数base64file,可以在matlab官方下载,我这里直接贴出来。
    • 这个函数真的非常有用,很多地方需要用到这种编码。
function [base64string,base64string_len] = base64file(file)
fid = fopen(file,'rb');
bytes = fread(fid);
fclose(fid);
base64string_len = size(bytes,1);
encoder = org.apache.commons.codec.binary.Base64;
base64string = char(encoder.encode(bytes))';
end
  • 我们再来看官方给出的请求参数
    在这里插入图片描述
    speech和len是音频编码之后得到的数据,rate和channel有指定值而且不可省略dev_pid这个是调用的接口函数,一般取默认值就好,按需求更改。
    在这里插入图片描述

  • 要点都说完了,下面看代码就很好理解了
[base64string,base64string_len] = base64file(path);
data = struct('format','wav','token',token,'len',base64string_len,...
    'speech',base64string,'cuid','Sirius','rate',16000,'channel',1);
result = webwrite(url,data);
result = result.result{:};

在这里插入图片描述


  • 最后以一个完整的例子为例,直接运行对着麦克风说话即可
a = audiorecorder(16000,16,1);
record(a);
pause(5);
stop(a);
a = getaudiodata(a);
audiowrite('test.wav',a,16000);
txt = Totext('test.wav');
delete('test.wav');

function result = Totext(path)
api_key = '你的';
secret_key = '你的';
url_token = ['https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=',api_key,'&client_secret=',secret_key];
token = webread(url_token);
token = token.access_token % 至此,获得了token
url = 'http://vop.baidu.com/server_api';
[base64string,base64string_len] = base64file(path);
data = struct('format','wav','token',token,'len',base64string_len,...
    'speech',base64string,'cuid','Sirius','rate',16000,'channel',1);
result = webwrite(url,data);
result = result.result{:};
end

function [base64string,base64string_len] = base64file(file)
fid = fopen(file,'rb');
bytes = fread(fid);
fclose(fid);
base64string_len = size(bytes,1);
encoder = org.apache.commons.codec.binary.Base64;
base64string = char(encoder.encode(bytes))';
end

下面是相关的文章,有兴趣可以看看,有关我如何提取曲线数据和其他API的使用
链接: 百度云人脸识别.
链接: 有道翻译
链接: 百度地图经纬度.
链接: 百度云文字识别
链接: MATLAB 发送邮件 sendmail的使用.
链接: MATLAB 曲线数据提取工具 GUI
嘿嘿,如果觉得有用,请点赞支持,谢谢

发布了50 篇原创文章 · 获赞 66 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_43157190/article/details/103439898
今日推荐