PHP调用百度的语音技术API将录音识别转换文字

2021-06-28 16:12 php实例 70 梁俊威

近期在开发小程序的时候,有这么一个功能需要使用到语言识别转文字功能,用户录音后,其他用户可以通过点击“译文字”按钮转换为文字,这里只演示后台调用API功能部分,废话不多说,直接上码!

获取百度TOKEN方法(原理跟微信TOKEN差不多的一样):

protected function getBaiduToken(){
    $url = 'https://aip.baidubce.com/oauth/2.0/token';
    $post_data['grant_type']       = 'client_credentials';
    $post_data['client_id']      = '';// 你的APP KEY
    $post_data['client_secret'] = '';// 你的APP SECRET
    $o = "";
    foreach ( $post_data as $k => $v ){
        $o.= "$k=" . urlencode( $v ). "&" ;
    }
    $post_data = substr($o,0,-1);
    $token = $this->request_post($url, $post_data);
    $token = json_decode($token, true);
    return $token['access_token'];
}

封装的CURL方法:

protected function request_post($url = '', $param = '', $header=null){
    if(empty($url)||empty($param)){
        return false;
    }
    $postUrl = $url;
    $curlPost = $param;
    $curl = curl_init();//初始化curl
    if(!empty($header)){
        curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
    }
    curl_setopt($curl, CURLOPT_HEADER, 0);//返回response头部信息
    curl_setopt($curl, CURLOPT_URL,$postUrl);//抓取指定网页
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
    curl_setopt($curl, CURLOPT_POST, 1);//post提交方式
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
    $data = curl_exec($curl);//运行curl
    $request_header = curl_getinfo($curl, CURLINFO_HEADER_OUT);
    curl_close($curl);
    return $data;
}

调用

$audio = file_get_contents($file_url); //$file_url是文件路径
$base_data = base64_encode($audio);

$url = "" //使用你需要调用的接口
$token = $this->getBaiduToken();

$post_data = [
    'format'=>'m4a',//录音文件后缀
    'rate'=>16000,//固定参数
    'channel'=>1,//固定参数
    'cuid'=>$this->wuser['openid'],
    'token'=>$token,
    'dev_pid'=>80001,//固定参数
    'speech'=>$base_data,
    'len'=>strlen($audio)
];
$post_data = json_encode($post_data);
$header = [
    'Content-Length:'.strlen($post_data),
    'Content-Type:application/json'
];
$res = $this->request_post($url, $post_data, $header);
$res = json_decode($res, true);

// 接下来执行你的业务逻辑即可

我们使用的是json格式进行调用,其实并不复杂,代码仅供参考,最终落地实操可能需要小伙伴稍行修改。

这个调用的难点在于怎样去提交speech文件,官方要求是base64格式,有的小伙伴可能一个不注意会在这里被坑半天。

若无特殊说明,本站点所有内容均为原创,转载请说明出处!

原文链接:https://www.ljwei.com.cn/read/308.html

QQ客服

QQ客服

微信客服

微信客服

微信客服二维码
意见反馈

意见反馈

一键置顶