伝統的な方法は、3ヶ月以内の概要音声認識内蔵オンラインの音声認識システムカルディの(GMM + HMM + NGRAM)に基づいてどのように3つの白いを取ることです

ここ数カ月の間にブログの前で、私は、従来の音声(電話)から言われているインテリジェントスピーチ(音声認識)にカット。初めは、音声認識の基礎を学ぶ彼は、プレゼンテーション(PPT作るために学生のグループを知った後に書くことを学ぶことです音声認識、従来法(GMM + HMM + NGRAM)の概要)。ボスは特定のタスク配置されたいくつかの時間後:当社独自のARMチップ上のオンラインカルディ基づいて、音声認識システムを構築するために、3人の男性が完了するまでに約3ヶ月を過ごします。私たちは、音声認識のすべての白の領域であるため、要件は、従来のGMM-HMMに達成するために、低くすることができます。私たちは、このタスクは、ビット心ないエンドで受信正直に言うと、時間通りに完了することができないかわからない、結局のところ、我々はなじみのないカルディし、音声認識に精通していません。タスクが割り当てられているので、また、上の弾丸をかむと、完了するために、最善を尽くします。参照のためにいくつかの経験があれば、我々は回り道を避けることができるように、私は本能的に最初の百度/ Google検索、検索に合わせて、ご覧ください。残念ながら、私は価値のあるものを発見したことはありません。まさか、私たちは彼らの以前の経験に基づいて、前方に模索することはできません。最終的には、埋め込まれた音声認識システムの上に構築するためのオンラインプラットフォームを完了するために、3ヶ月未満過ごすことを計画しました。実際に良い基盤を築くために、市販の製品の後ろにやるだけのデモが、それだけには、多くの経験を蓄積しました。今日、私は基準となる類似製品の友人をしたいし、我々はそれを行う方法を共有しましょう。

 

今プロジェクトとして、我々はプロジェクトを完了するためにいくつかの段階での計画を持っている必要があります。私はカルディのための音声認識の基本は決して近年の人工知能(AI)熱すぎる、既知のカルディ名に音声認識を行う前に(簡単な理解を持って知ったとき。主脚人工知能などのインテリジェント声カルディに基づいて実施されたその多くは一点、私は声がこの人気のフィールドの動的な)について、自然に関心意志やっていました。カルディの簡単な理解によると、私は最初はカルディのための観光名所のスキームの後ろに何をすべきかを把握する一方で、カルディに基づいてより深い理解を持っている約一ヶ月を過ごすことを計画、カルディ学ぶことである、3つのフェーズにプロジェクトを置きます完了するまでの時間。第二段階は、ソフトウェアアーキテクチャの設計、コードを書く、トレーニングモデルで、それが完了するまでに1ヶ月程度の期間を要しました。第三段階は、デバッグ認識率を向上させる、または完全に1ヶ月程過ごすことです。予定時間は、実際の状況に応じて微調整を行います。

 

図1に示すように、第一段階

第一段階は、カルディを学ぶことです。データの準備とネットワークの作成とデコードをデコードMFCC、GMM-HMMモデルのトレーニング、:私たちは、このプロジェクトを行うには3人なので、私は三つの部分に学習課題を置きます。他の二つの学生が良いモジュールを選択した後、復号化ネットワークの作成とデコードの残りの部分は私が学んできました。学習プロセスは、オンラインの記事、ブログの外観を見て、カルディコード、スクリプトのプロセスを確認することです。あなたが何をすべきかの背後にある科学を把握した後、我々は改善することができるように、PPTの学生のグループをしながら、話をします。私の以前の記事(デコード関連参照ベースのWFST音声認識デコーダを)。カルディデコードの2種類があります(オンライン識別などに使用)、オンライン、オフライン(などのデバッグのために使用されたモデル、)とは、2つの方法がありますオンラインここで、一つは、オンラインの音声認識を行うことMIC PortAudioにより取得した音声データから、他のです音声認識の種類は、WAVオーディオファイルを読み取る方法によりオンラインで行われます。私たちは、やることはPortAudioによって作動機構を理解することが必要である、2が特にMIC取得モードから、良い参考で、オンラインの音声認識です。だから私は基本的に、コードベースのオンラインのブログによると、動作メカニズムを把握、デバッグにPC上のthchs30ラインの識別を構築しました。カルディ16kHzのサンプリングレートは、毎25msの時間フレーム(10msのフレームシフト)に設定された処理音声長の群が285ms(25+(27-1)となるように、27の各セットは、MFCC特徴抽出および復号化を行うことが濃縮され* = 285 10)、4560(16 * 285 = 4560)サンプリングポイントの合計。各処理は、その後、セットのセット後に除去した後、MFCCを行い、復号語は、印刷されたいくつかの単語を認識するかどうかを確認するために、バッファをデコードします。

 

図2に示すように、第二段階 

第一段階は、第二段階は、実際に動作します、学ぶことです。私たちは、完全なシステム構築するために最初のセットのゴール後、Linux上での開発:英語の数字に0-9を認識することができ、オンラインPC、リアルタイムに添付データケーブルでデバイスを(これらは、オーディオソースは言ったので、英国人のオンライン容易に入手可能である認識するために選択しました、我々はそれがあり、録音したオーディオソースの仕事、良い節約時間)を節約することができ、PCの画面上の0-9をリアルタイムでプリントアウトすることができた後、人々は、デジタル機器の前にGMM-HMMモデルの値に近い優れた認識率を英語を話します。みんなのタスクは、最初のステージに従うことです。MFCCは、などのタグ付け、として、関連する仕事に訓練学生のための良いモデルをデータ準備や学生のデータの準備を学び、その後、MFCC関連のコードでカルディを移植します。トレーニングのワーキングモデルを準備を開始するモデル訓練学生の学習、およびその他のデータは、訓練開始後も用意します。私は、全体のデザイン・ソフトウェア・アーキテクチャを担当していますが、また、我々のシステムに移植(MFCCを除く)カルディ大半。カルディを学習することによって、私は音声認識ソフトウェアアーキテクチャは、より深い理解を持っているかのこのラインを設計しました。2つの段階、すなわちトレーニングフェーズと認識フェーズにおける音声認識。トレーニングフェーズは、と段階を識別するためのモデルを取得することです。それは比較的独立しており、我々はカルディに基づいてモデルを訓練する必要があり、最終的にはソフトウェアの使用の段階(ファイルを読むネットワークの初期化時に復号された)を識別するためにfinal.mdlおよびその他のドキュメントを取得します。主に(特徴抽出および復号を含む)は、2つの部品、集音および識別の相識別ソフトウェア。したがって、2つのスレッドシステム、収音スレッド(オーディオキャプチャスレッド)、それは他のスレッド(カルディ処理スレッド)を同定することで、取得および前処理音(例えば、ノイズリダクション)を担う、ALSAに基づいて行われるがあり、責任がありますMFCCとデコード。インタラクティブなデータのリングバッファを介して2つのスレッド、心の中でデータの保護を維持します。このシステムのソフトウェアアーキテクチャのブロック図以下のとおりです。

 

私はソフトウェアフレームワークを構築するためにコードを書き始めていない問題が発生した後のソフトウェアアーキテクチャの議論。スレッドを作成し、その他のLinuxでの生活の日常の一部です。ALSA構成モジュール及び前処理等の初期化を含む最初の初期化を行うオーディオキャプチャスレッド、。ALSA_LIBにより、カルディプロセス・スレッドを活性化しながら、前処理と後処理のオーディオデータだけでなく、リングバッファに行うために、データを読んだ後、オーディオデータの収集を完了カルディプロセスのスレッド開始を聞かせて、その後、定期的にするためのAPIの仕事作品。カルディスレッドはまた、いくつかの初期化作業を行い、その後、活性化を待っているの上で寝ます。活性化した後、リングバッファの音声データを取り始める、その後、MFCCとデコーダを行います。上で寝るし、次の完全な再活性化を待ちます。カルディ関連のコードが内に移植されていないソフトウェアフレームワークを設定するときは、カルディプロセスのスレッドは、単純にファイルに書き込まれたPCM音声データでリングバッファから取得し、その後、基本的な形状を説明するためにCoolEdit、通常の音声ソフトウェアフレームワークで聴きます。最初のオーディオキャプチャスレッドで前処理モジュールでは増加しなかった、ファイルに書き込まれたALSAのPCMデータからそこに着くためのデバッグは、ノイズ抑制(ANS)モジュールのほかに、ノイズを聞くことがわかりました。このモジュールは、内部のWebRTCです。WebRTCは3前処理モジュール(AEC / ANS / AGC)で数年前、私は善意でそれを処理するために、単純なを引き継ぐために、この時間を使用し、ノイズ除去の効果はかなり良いです。ANSは、ループ10ミリ秒であり、27のグループが285msになると私は回線識別復号処理においてカルディ前に述べたように、私は、オーディオキャプチャ糸のループとして570MS時間の両方の最小公倍数を取ります。ALSAは、音声データに57分から取った後(10分の570 = 57)回ノイズ抑制、音声データを作成し、その後、抑制リングバッファに書き込まれます。カルディスレッド285msは有効か、単に2(285分の570 = 2)を取るために、やって音声データの処理を取り出します。

 

設定後のソフトウェアアーキテクチャは、カルディコードを移植し始めました。コードのカルディ大量、できないと、すべてが私たちのシステムに移行必要がある、我々は必要それを移植する必要があります。どのように我々はそれを必要とするコードを移植することができますか?検討した後、私は次のメソッドを使用:で移植関連の符号を復号最初の行をし、その後、コンパイルを停止コンパイルまで増加傾向に欠けているものを促さ何が間違っているものを報告することを始めました。このアプローチは、必要なファイルがシステムに移植されることが保証されますが、機能はまだそのレベルに役に立たないいくつかのファイルは、機能レベルに提出することも可能です。時間に追わ、問題は一時的なケアです。その他の移行プロセスは、手作業で慎重かつ細心にする必要があります。移行時に発生する問題は、最終的には十分に解決、検索し、オンラインで行きました。openfst、BLAS、LAPACK:3つのオープンソースのライブラリのカルディ主な用途。私が使ってBLASとLAPACK従来の方法は、それは、そのように他のコードの使用を「/含める/使用」「は/ usr / libに」と下のライブラリとヘッダファイルシステムを、その後、コンパイルされたライブラリをダウンロード置くための公式ウェブサイトです。カルディのサポートはBALSライブラリはATLAS / CLAPACK / openBLAS / MKLなどを持っています。IntelのMKLの使用上のUbuntu PC X86上で動作しているとき、ARM上で使用することはできませんカルディは、あなたが他のいくつかのいずれかを使用する必要があります。私は、主に三つの、評価openBLASにダウンしていた:1)それはBSDであり、2)これは、複数のアーキテクチャ(ARM / X86 / MIPS /をサポートしています.... )、このような/ ARM / NVIDIA / Huawei社などIBMなど、多くの有名企業で使用され、最高のパフォーマンス(さまざまなアーキテクチャでアセンブリコードの多くに埋め込まれている)、オープンソースのライブラリであり、3)それは、複数のコンパイラオプションを持っていますそのようなそのようなスレッドの数を設定することとしてシングルスレッド/マルチスレッド・オプションなど、から選択します。早期BLASコードはCで書かれており、後でそのパッケージのためのFORTRAN、そうFortranのためのシステムに加えてサポートを使用しています。openFSTに、私はそれは多くの使用でないことを発見した、それは従来の方法に役に立たないですが、直接移植システムで使用されるコードに。私は移植の良いコンパイラの他の学生と同様にMFCCとALSAインタフェース(PortAudioインタフェースでALSA代替カルディとのインタフェース)の残りの部分もそれに移植に関連した後、何の問題もありません。このような移植はしても、エンド場合に動作します。システムへとカルディSRCに移植コードカルディ下コードの比較は、ごく一部を使用すべきです。次の図は、ファイルシステム(関連するヘッダー・ファイルを表示されていない)に移植カルディを示しています。モデルは、予備的なモデルは、ファイルを生成して、システムにこれらのファイルがPC画面上に実行することができ、人々が話す言葉をプリントアウトしますが、間違っていたもの学生を訓練する責任があります。何もそれをデバッグするため、これは、通常の方法ではありません!

 

 

図3に示すように、第三段階

第三段階は、デバッグされています。第二段階の終了後、そこに言葉を話すが、彼らは間違っているし、彼らは問題の箇所をトラブルシューティングする必要があります。モデルコード:音声認識システムからのラインは、二つの大きな角度に分けることができます。まず、我々は、モデルの調査で始まる、問題や課題コードモデルの実装を検索する必要があります。実質的に透明な機構thchs30ライン復号化を使用して、第一段階でTRI1音モデルは、認識率が不良でした。今、認識率に注意を払う、そしてモデルがtri2bを交換され、認識率が増加しました。これは、オンラインデコードコードでカルディを示して問題ありません、問題は認識率の差モデルです。また、カルディ世界で非常に多くの人々が、問題デコード行がある場合は修正が必要です。だから我々は、問題のモデルことを確認するにはthchs30にファイルを生成した我々のモデルを置くことにしました。MIC入力ノイズ干渉からのオーディオデータを排除するために、ファイルを検証するために、方法を読み取ります。基本的にファイルを見つけるために私たちのモデルは、モデルに問題があることを示す、右を認識しません。調査する学生のための責任をモデルとすべての8Kサンプリングの訓練のためのソースが、オンライン復号化は、我々はすべてに8K、16Kへのターンの再サンプリングプログラムで、自分自身に穴を掘っ16Kサンプル、であることを発見これは、ピットを埋めますが、認識率はまだ悪いです。また、テスト・セットは、中国の人々の発音である一方、トレーニングセットは、すべての英国の発音されている、特定のアクセントがあることを見出し、それはトレーニングセットとして、当社の中国の人々の独自の発音を使用するのが最適です。だから我々は所有し、記録されたトレーニングのためのソースを、トレーニングデータを増加させるために、だけでなく、音声を記録し、多くの人を喜ばせます。新しいモデルを取得するために訓練した後、それを6または7のthchs30検証、認識率の内側に配置され、これは認識率を向上させるためには、モデルはまた、デバッグを継続する必要があり、モデルの一般的な方向を示しています。

 

コードの次のセクションでは、問題があるかどうかに依存します。交換する当社独自のシステムへの新たな生産のモデル、およびオーディオファイルデータから途中で(私たちのシステムは、両方のMICからのデータを収集することができ、オーディオファイルからデータを読み取ることができ、デバッグのための音声ファイルからデータを読み込みます)データ収集MICからのビューのコードポイントに問題があるかどうか(これはノイズ等の干渉要因を排除するために行われます)。ダウン実行し、認識率は、我々のコードでも問題があることを示している、まだ非常に貧弱であることがわかりました。私はコードのデバッグの一部となっている第2段階では、PCMのリングバッファにオーディオデータを取得する場所からカルディ・プロセス・スレッドを確保することは問題ありません。2つの側面が1はMFCC OKであればPCMデータに送られ、そして第二に、私たちのオンラインデコードメカニズムは、オンラインの復号化メカニズムにカルディまったく同じに保つために、デバッグする必要があります。すぐに良いデバッグ。第二に、さらに綿密な調査を徹底的にオンラインの復号化メカニズムにカルディを理解するために、我々はそれを修正しないで同じ場所を、ほとんどでthchs30認識率でのデバッグ23日間後に、これは、デバッグ後に我々のコードでも良いですが表示さベースは、後にパフォーマンスチューニングを開始します。

 

オーディオファイルからデータを読み込むことによって識別されるフロントライン、いくつかの比較的クリーンなデータを実行してください。今、MICからの音声データを読み、実際にオンライン認識を行い、認識率は、我々は完全にない前処理(デバッグモジュールはANSを追加したのみフロント)を行うことを示している、試験後のダウン著しく低いです。私は前に取って、音声データを処理した後CoolEditで聞くことが出てダンプ、確かに時々音質が良くないので、私は再びフレーズを追加するには、AGCモジュールをのWebRTC、再び何度も聞いて、聞くために、治療の前と後のオーディオデータをダンプ音質を感じますノーマル。実行は再び認識率が実際に大幅に改善されてきた、AGC MICオンライン認識からオーディオデータを取り込む追加しました。前処理は、それが力モデルに任され、さらに認識率を向上させるために、行われていないことができます。様々なモデルをしようとしているときにソースより多くの人が訓練するために録音しながら、モデルの学生を行ってください、最終的にtri4bを使用して、我々は比較的良好な認識率を持っていました。我々はGMM-HMMを使用し、現在主流の音声認識はもはや使用されている、上司は特に、調整する必要を感じていない、と確かに主流モデルとバックになりますが、全体的に埋め込まれたオンラインの音声認識ソフトウェアコードので、オーディオキャプチャソフトウェアアーキテクチャは、実際の製品を行うだろう背後にあるコードに基づいて、便利です。

 

ベテランの音声認識分野では、埋め込まれた音声認識システムのこのラインは非常に未熟です。しかし、私たちは、音声認識分野についてもう少し感触を持っているこのシステムライドスルーも、自信を持って上司に良いスタートを持っていたし、そうし続けることがあります。エンジニアリングのもので物事、そうすることで、深さの背後に多くの希望は、音声認識の分野でより多くの経験を蓄積します。このシステムは、任意の有用な参照情報は、純粋に私たちの過去の経験に基づいて取る模索されてなりません。製品には、同じことを行うことはできませんが、問題解決のアイデアの多くは同じです。あなたは友人を持っている場合も、Dachuより良いオンライン音声認識システムを探索する組み込み歓迎でオンライン音声認識システムを取ります。

おすすめ

転載: www.cnblogs.com/talkaudiodev/p/11240033.html