ホームページ  >  記事  >  バックエンド開発  >  Baidu音声認識機能をPython言語で実装した例

Baidu音声認識機能をPython言語で実装した例

小云云
小云云オリジナル
2017-12-14 11:29:172749ブラウズ

将来、人工知能は市場で非常に重要な位置を占めるでしょう。Python言語は人工知能を学ぶのに最適なプログラミング言語です。それでは、その魅力を感じてみましょう。

Baiduが提供するサンプルプログラムは、C版でもJava版でも、method1とmethod2の2種類に分かれており、前者はimplicit(投稿はjson文字列、音声データはjsonにエンコード)と呼ばれます。後者は明示的と呼ばれます (投稿は音声データです) この記事では主に Python 言語で実装された Baidu 音声認識 API の使用例を紹介します。必要な方は参考にしていただければ幸いです。

当初、pythonwaveパッケージは「文字列」を扱っていると考え、C言語の配列と矛盾するのではないかと心配したため、非効率ではあるが安全な方法1、

つまり、まず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 音声認識タグの作成

以上がBaidu音声認識機能をPython言語で実装した例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。