>  기사  >  백엔드 개발  >  Python 언어로 Baidu 음성 인식 기능을 구현한 예

Python 언어로 Baidu 음성 인식 기능을 구현한 예

小云云
小云云원래의
2017-12-14 11:29:172748검색

미래에는 인공지능이 시장에서 매우 중요한 위치를 차지하게 될 것이며, Python 언어는 인공지능을 연구하는 데 가장 적합한 프로그래밍 언어입니다. 이제 그 매력을 느껴보세요!

C 버전이든 Java 버전이든 Baidu에서 제공하는 샘플 프로그램은 method1과 method2의 두 가지 유형으로 나뉩니다. 전자는 암시적(포스트는 json 문자열이고 오디오 데이터는 json으로 인코딩됨)이라고 합니다. 후자는 명시적이라고 합니다(게시물은 오디오 데이터입니다). 이 기사는 Python 언어로 구현된 Baidu 음성 인식 API의 사용 예를 주로 소개합니다. 도움이 필요한 친구가 이를 참조할 수 있기를 바랍니다.

처음에는 pythonwave 패키지가 "문자열"을 다룬다고 생각하고, C 언어 배열과 맞지 않을까 걱정해서 비효율적이지만 안전한 방법 1을 선택했습니다.

즉, first base64 오디오 데이터와 샘플링 속도를 인코딩합니다. 채널 번호 및 기타 정보가 dict로 수집되고 최종적으로 json 문자열로 인코딩됩니다. 결과는 항상 다음과 같이 보고됩니다.

3300 입력 매개변수가 올바르지 않습니다.

urllib2를 시도했습니다. 그리고 pycurl 패키지를 연속적으로 실행했는데 모두 동일합니다.

method2로 전환해야 했고 성공했습니다. (wave 패키지에 의한 오디오 저장이 "문자열"이 아닌 것 같습니다.)

#encoding=utf-8 
import wave 
import urllib, urllib2, pycurl 
import base64 
import json 
## get access token by api key & secret key 
 
def get_token(): 
  apiKey = "xxxxxxxx" 
  secretKey = "xxxxxxxxx" 
  auth_url = "https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=" + apiKey + "&client_secret=" + secretKey; 
  res = urllib2.urlopen(auth_url) 
  json_data = res.read() 
  return json.loads(json_data)['access_token'] 
 
def dump_res(buf): 
  print buf 
## post audio to server 
def use_cloud(token): 
  fp = wave.open('vad_0.wav', 'rb') 
  nf = fp.getnframes() 
  f_len = nf * 2 
  audio_data = fp.readframes(nf) 
 
  cuid = "xxxxxxxxxx" #my xiaomi phone MAC 
  srv_url = 'http://vop.baidu.com/server_api' + '?cuid=' + cuid + '&token=' + token 
  http_header = [ 
    'Content-Type: audio/pcm; rate=8000', 
    'Content-Length: %d' % f_len 
  ] 
  c = pycurl.Curl() 
  c.setopt(pycurl.URL, str(srv_url)) #curl doesn't support unicode 
  #c.setopt(c.RETURNTRANSFER, 1) 
  c.setopt(c.HTTPHEADER, http_header)  #must be list, not dict 
  c.setopt(c.POST, 1) 
  c.setopt(c.CONNECTTIMEOUT, 30) 
  c.setopt(c.TIMEOUT, 30) 
  c.setopt(c.WRITEFUNCTION, dump_res) 
  c.setopt(c.POSTFIELDS, audio_data) 
  c.setopt(c.POSTFIELDSIZE, f_len) 
  c.perform() #pycurl.perform() has no return val  
if __name__ == "__main__": 
  token = get_token() 
  use_cloud(token)

실행 결과

{"corpus_no":"6150045491002357923","err_msg":"success.","err_no":0,"result":["播放小苹果,"],"sn":"243903724071431919050"}

관련 추천:


.Net에서 개발한 WeChat 공개 플랫폼의 음성 인식 예시에 대한 자세한 설명

음성 인식을 위해 JavaScript를 사용하는 방법에 대한 간략한 분석

Pictures_html5 튜토리얼 기술을 사용한 HTML5 음성 인식 태그 작성

위 내용은 Python 언어로 Baidu 음성 인식 기능을 구현한 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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