科大訊飛オフライン音声認識設置と運行
2236 ワード
まずホームページからsdkをダウンロードします.
ファイル解析:
bin/incの下に4つの頭のファイルがあります.msp_errors.h msp_types.h qisr.h qtts.h
msp_errors.h msp_types.hは汎用データ構造のヘッダファイルで、qisr.hは音声認識用のヘッダファイルで、qtts.hは音声合成用のヘッダファイルです.
これはsdk中原代の解釈です.
前にコンパイルして作成した「asrdemo.o」を削除し続け、コンパイルに成功しました.
その後、binで「asrdemo」実行可能ファイルを生成し、binディレクトリで実行します(./asrdemo)
実行に成功しました
しかし、出力の結果はコードの山で、中に識別が入ると、ネットで調べたら、コードの関数論理は次のようになります.
1.まずQISRInit()関数を呼び出します.パラメータは自分のアプリです.SDKごとに登録してこそダウンロードできます.だから唯一です.ユーザーを区別するために使用します.各レベルのユーザは毎日SDKを使う回数が制限されています.結局、人が多く使う音声認識の性能は必ず下がります.
2.その後、GraammaID、入出力のパラメータparamと呼び出し状態戻り値retをパラメータとしてQISRSessitionBegin()関数に初期化し、戻り値はsessionIDとなります.これは後の関数の主要なパラメータの一つです.
3.自分のオーディオファイルを開いて、QISRAudio Writeを呼び出す()関数書き込みは、セグメント化しても良いし、一回目のパラメータはsessionIDで、上の初期化関数が返した値、2番目のパラメータはオーディオデータヘッドポインタ、3番目のパラメータはオーディオファイルサイズ、4番目のパラメータはオーディオ送信の状態、送信が完了していないこと、残りの2つはサーバー端で音声状態と認識状態の戻り値を検出することを示しています.
4.QISRGetResoult()関数を呼び出して識別を取得した結果、一番目のパラメータはまだsessionID、二つ目のパラメータは出力識別の状態、三つ目のパラメータはサーバとの相互作用の間隔時間、公式提案5000、私は0、4番目のパラメータは呼び出し状態戻り値ret、最後の関数の戻り値は上記結果のjsonデータです.
音声を録音する時、「ffmpeg」を使って録音します.簡単で便利です.音声認識の要求に合います.
音声に対する飛音の要求は以下の通りである.サンプリング率16 Kまたは8 KHz、サンプルビットは16ビット、モノラル、フォーマットはPCMまたはWAVである.それぞれの録音ソフトは標準32ビットのサンプルであり、ffmpegまたは自分でコードを書いて録音するしかない.
ffmpeg-f alsa -ar 16000-ac 1-i hw:0 lib.wav
ファイル解析:
bin/incの下に4つの頭のファイルがあります.msp_errors.h msp_types.h qisr.h qtts.h
msp_errors.h msp_types.hは汎用データ構造のヘッダファイルで、qisr.hは音声認識用のヘッダファイルで、qtts.hは音声合成用のヘッダファイルです.
これはsdk中原代の解釈です.
1.doc ;
2.lib SDK 。
3.example demo, Makefile , make ;
4.bin 、 ,make example , , ;
5.prj make , 。
その後、私はその指示に従って、exampleの下のasrdomeでmakeを降りましたが、エラーを報告しました.lasoundが見つからないので、makefileファイルを見に行きます.その中にこのライブラリが必要です.ネットで検索してみました.解決策は以下の通りです.sudo apt-get install alsa-base alsa-utils alsa-source libasound2-dev
再コンパイルして、またエラーを報告します.警告:時計のエラーを検出しました.作成は不完全かもしれません.前にコンパイルして作成した「asrdemo.o」を削除し続け、コンパイルに成功しました.
その後、binで「asrdemo」実行可能ファイルを生成し、binディレクトリで実行します(./asrdemo)
実行に成功しました
しかし、出力の結果はコードの山で、中に識別が入ると、ネットで調べたら、コードの関数論理は次のようになります.
1.まずQISRInit()関数を呼び出します.パラメータは自分のアプリです.SDKごとに登録してこそダウンロードできます.だから唯一です.ユーザーを区別するために使用します.各レベルのユーザは毎日SDKを使う回数が制限されています.結局、人が多く使う音声認識の性能は必ず下がります.
2.その後、GraammaID、入出力のパラメータparamと呼び出し状態戻り値retをパラメータとしてQISRSessitionBegin()関数に初期化し、戻り値はsessionIDとなります.これは後の関数の主要なパラメータの一つです.
3.自分のオーディオファイルを開いて、QISRAudio Writeを呼び出す()関数書き込みは、セグメント化しても良いし、一回目のパラメータはsessionIDで、上の初期化関数が返した値、2番目のパラメータはオーディオデータヘッドポインタ、3番目のパラメータはオーディオファイルサイズ、4番目のパラメータはオーディオ送信の状態、送信が完了していないこと、残りの2つはサーバー端で音声状態と認識状態の戻り値を検出することを示しています.
4.QISRGetResoult()関数を呼び出して識別を取得した結果、一番目のパラメータはまだsessionID、二つ目のパラメータは出力識別の状態、三つ目のパラメータはサーバとの相互作用の間隔時間、公式提案5000、私は0、4番目のパラメータは呼び出し状態戻り値ret、最後の関数の戻り値は上記結果のjsonデータです.
音声を録音する時、「ffmpeg」を使って録音します.簡単で便利です.音声認識の要求に合います.
音声に対する飛音の要求は以下の通りである.サンプリング率16 Kまたは8 KHz、サンプルビットは16ビット、モノラル、フォーマットはPCMまたはWAVである.それぞれの録音ソフトは標準32ビットのサンプルであり、ffmpegまたは自分でコードを書いて録音するしかない.
ffmpeg-f alsa -ar 16000-ac 1-i hw:0 lib.wav