Heim > Backend-Entwicklung > Python-Tutorial > Beispiel für die Implementierung der Baidu-Spracherkennungsfunktion in der Python-Sprache

Beispiel für die Implementierung der Baidu-Spracherkennungsfunktion in der Python-Sprache

小云云
Freigeben: 2017-12-14 11:29:17
Original
2766 Leute haben es durchsucht

Künstliche Intelligenz wird in Zukunft eine sehr wichtige Position auf dem Markt einnehmen, und die Python-Sprache ist die beste Programmiersprache für das Studium künstlicher Intelligenz. Lassen Sie uns jetzt ihren Charme spüren!

Das von Baidu bereitgestellte Beispielprogramm, egal ob C- oder Java-Version, ist in zwei Typen unterteilt: Methode1 und Methode2. Ersteres wird als implizit bezeichnet (der Beitrag ist eine JSON-Zeichenfolge und die Audiodaten werden in JSON codiert ), und letzteres wird als explizit bezeichnet (der Beitrag stellt hauptsächlich die Verwendungsbeispiele der in der Python-Sprache implementierten Baidu-Spracherkennung vor). es kann jedem helfen.

Am Anfang dachte ich, dass das Pythonwave-Paket „Strings“ behandelt und befürchtete, dass es mit dem C-Spracharray inkonsistent sein könnte, also entschied ich mich für die ineffiziente, aber sichere Methode1,

Das heißt Zuerst werden die Audiodaten mit Base64 kodiert, außerdem werden die Abtastrate, die Anzahl der Kanäle und andere Informationen in einem Diktat gesammelt und schließlich in einen JSON-String kodiert.

Das Ergebnis wird immer gemeldet:

3300 Die Eingabeparameter sind falsch

Ich habe die Pakete urllib2 und pycurl nacheinander ausprobiert und sie sind alle in der oben genannten Situation

Ich musste zu Methode 2 wechseln und es war erfolgreich (es scheint, dass die Welle Paket speichert Audio nicht als „String“)

#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)
Nach dem Login kopieren

Ergebnisse ausführen

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

Verwandte Empfehlungen:

Netzentwicklung von Beispielen für die Spracherkennung auf der öffentlichen WeChat-Plattform

Eine kurze Analyse der Verwendung von JavaScript für die Spracherkennung

Schreiben von HTML5-Spracherkennungs-Tags mit Bildern_ HTML5-Tutorial-Fähigkeiten

Das obige ist der detaillierte Inhalt vonBeispiel für die Implementierung der Baidu-Spracherkennungsfunktion in der Python-Sprache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage