>백엔드 개발 >PHP 튜토리얼 >php 接入百度语音的识别的api

php 接入百度语音的识别的api

WBOY
WBOY원래의
2016-07-06 13:53:531500검색

<code><?php //配置您申请的appkey
$token="XXXXX";//baidu

//************1.语音识别接口************
//$url = "http://japi.juhe.cn/voice_words/getWords";
$url="http://vop.baidu.com/server_api";
$params = array(
    "format"=>"wav",
    "rate"=>8000,
    "channel"=>1,
    "token"=>$token,
    "cuid"=>"74-D0-2B-BE-5E-31",
    "url"=>$pic_path,
    "callback" =>"XXXX",
      //"key" => $appkey,//APP Key
      //"file" => $pic_path,//上传的音频文件(采样率16k或者8k(rate),采样精度16bit(bit),单声道的pcm或者wav格式的音频)
      //"rate" => "8000",//采样率(16000或者8000)
      //"pname" => date("YmdHis"),//包名
      //"device_id" => "",//标记请求来源的标识,如用户所设备序列号 (SN),IMEI,MAC地址等
);
//$paramstring = http_build_query($params);
$paramstring=json_encode($params);
$content = juhecurl($url,$paramstring,1);
$result = json_decode($content,true);
if($result){
    //if($result['error_code']=='0'){
        print_r($result);
    //}else{
       // echo $result['error_code'].":".$result['reason'];
    //}
}else{
    echo "请求失败";
}
/**
 * 请求接口返回内容
 * @param  string $url [请求的URL地址]
 * @param  string $params [请求的参数]
 * @param  int $ipost [是否采用POST形式]
 * @return  string
 */
function juhecurl($url,$params=false,$ispost=0){
    $size=strlen($params);
    echo $size;
    $header = array( 
     "Content-Type: application/json",
     "Content-length:" . $size,
 );
    $httpInfo = array();
    $ch = curl_init();
 
    curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 );
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);  //设置头信息的地方  
    curl_setopt( $ch, CURLOPT_USERAGENT , 'JuheData' );
    curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT , 60 );
    curl_setopt( $ch, CURLOPT_TIMEOUT , 60);
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER , true );
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    if( $ispost )
    {
        curl_setopt( $ch , CURLOPT_POST , true );
        curl_setopt( $ch , CURLOPT_POSTFIELDS , $params );
        curl_setopt( $ch , CURLOPT_URL , $url );
    }
    else
    {
        if($params){
            curl_setopt( $ch , CURLOPT_URL , $url.'?'.$params );
        }else{
            curl_setopt( $ch , CURLOPT_URL , $url);
        }
    }
    $response = curl_exec( $ch );
    if ($response === FALSE) {
        //echo "cURL Error: " . curl_error($ch);
        return false;
    }
    $httpCode = curl_getinfo( $ch , CURLINFO_HTTP_CODE );
    $httpInfo = array_merge( $httpInfo , curl_getinfo( $ch ) );
    curl_close( $ch );
    return $response;
}
?></code>

有人用过吗,是提供url的方式的那种,为什么一直提示的是Array
(

<code>[err_msg] => parameters error.
[err_no] => 3300
[sn] => 967126290621465557773</code>

)

回复内容:

<code><?php //配置您申请的appkey
$token="XXXXX";//baidu

//************1.语音识别接口************
//$url = "http://japi.juhe.cn/voice_words/getWords";
$url="http://vop.baidu.com/server_api";
$params = array(
    "format"=>"wav",
    "rate"=>8000,
    "channel"=>1,
    "token"=>$token,
    "cuid"=>"74-D0-2B-BE-5E-31",
    "url"=>$pic_path,
    "callback" =>"XXXX",
      //"key" => $appkey,//APP Key
      //"file" => $pic_path,//上传的音频文件(采样率16k或者8k(rate),采样精度16bit(bit),单声道的pcm或者wav格式的音频)
      //"rate" => "8000",//采样率(16000或者8000)
      //"pname" => date("YmdHis"),//包名
      //"device_id" => "",//标记请求来源的标识,如用户所设备序列号 (SN),IMEI,MAC地址等
);
//$paramstring = http_build_query($params);
$paramstring=json_encode($params);
$content = juhecurl($url,$paramstring,1);
$result = json_decode($content,true);
if($result){
    //if($result['error_code']=='0'){
        print_r($result);
    //}else{
       // echo $result['error_code'].":".$result['reason'];
    //}
}else{
    echo "请求失败";
}
/**
 * 请求接口返回内容
 * @param  string $url [请求的URL地址]
 * @param  string $params [请求的参数]
 * @param  int $ipost [是否采用POST形式]
 * @return  string
 */
function juhecurl($url,$params=false,$ispost=0){
    $size=strlen($params);
    echo $size;
    $header = array( 
     "Content-Type: application/json",
     "Content-length:" . $size,
 );
    $httpInfo = array();
    $ch = curl_init();
 
    curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 );
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);  //设置头信息的地方  
    curl_setopt( $ch, CURLOPT_USERAGENT , 'JuheData' );
    curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT , 60 );
    curl_setopt( $ch, CURLOPT_TIMEOUT , 60);
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER , true );
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    if( $ispost )
    {
        curl_setopt( $ch , CURLOPT_POST , true );
        curl_setopt( $ch , CURLOPT_POSTFIELDS , $params );
        curl_setopt( $ch , CURLOPT_URL , $url );
    }
    else
    {
        if($params){
            curl_setopt( $ch , CURLOPT_URL , $url.'?'.$params );
        }else{
            curl_setopt( $ch , CURLOPT_URL , $url);
        }
    }
    $response = curl_exec( $ch );
    if ($response === FALSE) {
        //echo "cURL Error: " . curl_error($ch);
        return false;
    }
    $httpCode = curl_getinfo( $ch , CURLINFO_HTTP_CODE );
    $httpInfo = array_merge( $httpInfo , curl_getinfo( $ch ) );
    curl_close( $ch );
    return $response;
}
?></code>

有人用过吗,是提供url的方式的那种,为什么一直提示的是Array
(

<code>[err_msg] => parameters error.
[err_no] => 3300
[sn] => 967126290621465557773</code>

)

err_msg提示你参数错误,err_no说错误代码是3300,去百度语音识别 - 开发文档找这个错误代码,可以看到:

错误码 含义
3300 输入参数不正确

建议用抓包工具看一下PHP发出的请求是不是和文档上的相符

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.