Heim >Backend-Entwicklung >Python-Tutorial >Beispiel für die Implementierung der Baidu-Spracherkennungsfunktion in der Python-Sprache
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)
Ergebnisse ausführen
{"corpus_no":"6150045491002357923","err_msg":"success.","err_no":0,"result":["播放小苹果,"],"sn":"243903724071431919050"}
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!