機械学習はとても興味深い:音声認識にディープラーニングを使用する方法

機械学習はとても興味深い:音声認識にディープラーニングを使用する方法

[[203766]]

音声認識は私たちの生活に「侵入」しています。携帯電話、ゲーム機、スマートウォッチにはすべて音声認識機能が組み込まれています。彼は私たちの家も自動化しています。たった 50 ドルで、Amazon Echo Dot を購入できます。これは、次のように言うだけでテイクアウトを注文したり、天気予報を確認したり、ゴミ袋を購入したりできる魔法の箱です。

アレックス、ピザを注文して!

Echo Dot は、2015 年のクリスマス休暇中に発売され、Amazon ですぐに売り切れるなど大ヒットとなりました。

しかし、音声認識は実は何年も前から存在していたのに、なぜ今になって主流になりつつあるのでしょうか。それは、ディープラーニングによって、制御されていない環境での音声認識の精度が、ようやく実用に耐えるレベルまで向上したからです。

アンドリュー・ン教授はかつて、音声認識の精度が 95% から 99% に向上すると、それがコンピューターと対話する主な方法になると予測しました。

それでは、音声認識にディープラーニングを使用する方法を学びましょう。

機械学習は必ずしもブラックボックスではない

ニューラル機械翻訳がどのように機能するのか疑問に思っているなら、単に音声をニューラル ネットワークに入力して、テキストを生成するようにトレーニングすればよいと推測できるでしょう。

これはディープラーニングを使用した音声認識の最高峰ですが、残念ながらまだそこまでには至っていません(少なくともこの記事を書いている時点では。数年後には到達するでしょう)

大きな問題の一つは、話す速度が異なることです。ある人は「こんにちは!」と非常に速く言うかもしれませんが、別の人は「こんにちは!」と非常にゆっくり言うかもしれません。その結果、より多くのデータを含む長いサウンド ファイルが生成されます。両方のファイルは、「こんにちは!」という同じテキストとして認識される必要があります。さまざまな長さのオーディオ ファイルを固定長のテキストに自動的に揃えることは難しいことが判明しました。

この問題を解決するには、特別なトリックを使用し、ディープニューラルネットワークの外部で特別な処理を実行する必要があります。どのように動作するか見てみましょう!

音をビットに変換する

音声認識への最初のステップは、言うまでもなく、音波をコンピューターに入力することです。

音波を数値に変換するにはどうすればよいでしょうか。私が「こんにちは」と言っているサウンド クリップを例に挙げてみましょう。

音波は 1 次元であり、その高さに基づいて各瞬間に値を持ちます。音波の一部を拡大してみましょう。

この音波を数値に変換するには、等間隔のポイントで音波の高さを記録するだけです。

これをサンプリングといいます。毎秒数千回読み取り、その時点での音波の高さを数値として記録します。これは基本的に非圧縮の .wav オーディオ ファイルです。

「CD 品質」のオーディオは 44.1khz (1 秒あたり 44100 回の読み取り) でサンプリングされます。しかし、音声認識の場合、人間の音声の周波数範囲をカバーするには、16kHz (1秒あたり16,000サンプル) のサンプリング レートで十分です。

「Hello」の音波を1秒間に16,000回サンプリングしてみましょう。最初の 100 個のサンプルは次のとおりです。

各数字は、16,000 分の 1 秒あたりの音波の振幅を表します。

デジタルサンプリングアシスタント

音波サンプルは断続的にしか読み取られないため、元の音波の大まかな近似値にすぎないと思われるかもしれません。読み取り値の間にギャップがあるため、データが失われるのは必然ですよね?

しかし、ナイキスト定理のおかげで、サンプリング レートが予想される最高周波数より少なくとも 2 倍速ければ、数学を使用して間隔を置いたサンプルから元の音波を完全に再構築できることがわかっています。

私がこれについて言及する理由は、ほとんどの人がこの間違いを犯し、サンプル レートを高くすると必ずオーディオ品質が向上すると誤解しているからです。実はそうではありません。

サンプリングした音声データの前処理

これで、各数字が 1/16000 秒における音波の振幅を表す一連の数字が得られました。

これらの数値をニューラル ネットワークに入力することはできますが、音声認識のためにこれらのサンプルを直接分析するのは依然として困難です。代わりに、オーディオ データに対して前処理を実行することで、問題を簡単にすることができます。

まず、サンプリングしたオーディオを 20 ミリ秒の長さのチャンクに分割することから始めましょう。以下は最初の 20 ミリ秒のオーディオ (つまり最初の 320 サンプル) です。

これらの数値を単純な折れ線グラフとしてプロットすると、20 ミリ秒間の元の音波のおおよその形状が得られます。

この録音はわずか 1/50 秒の長さですが、このような短い録音でも、さまざまな周波数の音が複雑に組み合わされています。低音、中音、高音も少しあります。しかし、一般的には、人間の話し声はこれらの異なる周波数の音が混ざり合って構成されています。

このデータをニューラル ネットワークが処理しやすくするために、この複雑な音波を構成要素に分解します。まずベース部分を分離し、次にその次に低い部分を分離します。次に、各周波数帯域(低周波数から高周波数まで)のエネルギーを合計して、オーディオ クリップの各クラスのフィンガープリントを作成します。

誰かがピアノで C メジャーコードを演奏している録音があると想像してください。この音は C、E、G の 3 つの音符で構成されています。それらが混ざり合って複雑な音を形成します。この複雑な音を個々の音に分解して、C、E、G を区別できるようにします。これは音声認識と同じ原理です。

これを行うにはフーリエ変換が必要です。複雑な音波をより単純な音波に分解します。個々の音波が得られたら、各周波数帯域に含まれるエネルギーを合計します。

最終結果は、ベース(低音)から高音までの各周波数範囲の重要性の尺度となります。 50Hz それぞれが周波数帯域である場合、低周波から高周波までの 20 ミリ秒のオーディオに含まれるエネルギーは、次のリストのように表すことができます。

しかし、図で描くと理解しやすくなります。

20 ミリ秒のサウンド クリップには低周波エネルギーが多く含まれていますが、高周波エネルギーはあまり含まれていないことがわかります。これは典型的な「男性」の声です。

このプロセスを 20 ミリ秒のオーディオ チャンクごとに繰り返すと、スペクトログラムが作成されます (左から右への各列は 29 ミリ秒のオーディオ チャンクです)。

スペクトログラムは、オーディオ データ内の音符やその他のピッチ パターンを実際に確認できるので便利です。ニューラル ネットワークにとって、生の音波よりもこの種のデータでパターンを見つける方がはるかに簡単です。これが、ニューラル ネットワークに入力するデータを実際に表現する方法です。

短い音声から文字を認識する

処理しやすい形式のオーディオができたので、これをディープ ニューラル ネットワークに入力します。ニューラル ネットワークへの入力は、20 ミリ秒のオーディオ チャンクになります。ニューラル ネットワークは、それぞれの小さなオーディオ スライスごとに、現在話されている音に対応する文字を判別しようとします。

ここでは、リカレント ニューラル ネットワーク、つまり将来の予測に影響を与えるメモリを持つニューラル ネットワークを使用します。これは、予測される各文字が次の文字の予測に影響を与える可能性があるためです。たとえば、これまで「HEL」と言っていた場合、次に「LO」と言って「Hello」を完成させる可能性が高くなります。 「XYZ」のように発音できないものを言うことはまずありません。したがって、以前の予測を記憶しておくと、ニューラル ネットワークは将来についてより正確な予測を行うことができます。

オーディオ クリップ全体をニューラル ネットワークに通すと (一度に 1 ブロックずつ)、オーディオの各ブロックとそれに最もよく対応する文字を識別するマッピングが作成されます。これは私が「こんにちは」と言ったときに得られるマッピングの大まかな概要です。

私たちのニューラル ネットワークは、私が言った単語はおそらく「HHHEE_LL_LLLOOO」であると予測しています。しかし、私が「HHHUU_LL_LLLOOO」、あるいは「AAAUU_LL_LLLOOO」と言った可能性もあると考えています。

この出力を整理するには、いくつかの手順に従うことができます。まず、重複する文字を 1 つの文字に置き換えます。

  • HHHEE_LL_LLLOOO は HE_L_LO になります
  • HHHUU_LL_LLLOOO は HU_L_LO になります
  • AAAUU_LL_LLLOOO は AU_L_LO になります

次に、すべての空白を削除します。

  • HE_L_LOはHELLOになる
  • HU_L_LOはHULLOになる
  • AU_L_LO は AULLO になります

これにより、「Hello」、「Hullo」、「Aullo」という 3 つの転写が可能になります。これらの単語を声に出して言うと、すべて「Hello」に似た音になります。ニューラル ネットワークは一度に 1 文字ずつ予測するため、純粋に音声的な書き起こしが生成されます。たとえば、「彼は行かないだろう」と言うと、「彼は行かないだろう」と書き起こされるかもしれません。

秘訣は、これらの発音ベースの予測を、書かれたテキスト(書籍、ニュース記事など)の大規模なデータベースに基づく尤度スコアと組み合わせることです。最も可能性が低い結果を捨て、最も実用的な結果を残します。

「Hello」、「Hullo」、「Aullo」という可能性のある書き起こしのうち、「Hello」の方がテキスト データベースでより頻繁に出現することは明らかです (元の音声ベースのトレーニング データでは言うまでもありません)。そのため、これが正解である可能性が高いです。したがって、他の文字起こしの代わりに「Hello」を最終結果として選択します。終わり!

ちょっと待ってください!

「でも、もし誰かがHulloと言ったらどうなるでしょうか?」と思うかもしれません。その言葉は実際に存在します。おそらく「Hello」は誤記です!

[[203775]]

もちろん、実際に「Hello」ではなく「Hullo」と言う人もいるかもしれません。しかし、そのような音声認識システム(アメリカ英語でトレーニングされたもの)は、基本的に「Hullo」のような転写結果を生成しません。ユーザーが「Hullo」と言うと、「U」をどれだけ強く発音しても、常に「Hello」と言っていると認識されます。

ぜひお試しください。携帯電話がアメリカ英語に設定されている場合、携帯電話のアシスタントに「Hullo」という単語を認識させてみましょう。これはうまくいきません! テーブルをひっくり返してこれを拒否します。常に「こんにちは」と理解します。

「Hullo」を認識しないのは合理的な動作ですが、携帯電話があなたが言った有効な文章を理解できないという厄介な状況に遭遇することがあります。このため、これらの音声認識モデルは常に再トレーニング状態にあり、少数のケースを修正するにはさらに多くのデータが必要になります。

独自の音声認識システムを構築できますか?

機械学習の最も素晴らしい点の 1 つは、それが時々非常にシンプルに見えることです。大量のデータを取得して機械学習アルゴリズムに入力すると、魔法のように、ゲーミング ノート PC のグラフィック カード上で実行される世界クラスの AI システムが作成されます...そうですよね?

これは場合によっては当てはまりますが、音声認識の場合は当てはまりません。音声認識は難しい問題です。低品質のマイク、バックグラウンドノイズ、リバーブやエコー、アクセントの違いなど、ほぼ無限の数の課題を克服する必要があります。ニューラル ネットワークがこれらを処理できるようにするには、トレーニング データにこれらすべてを含める必要があります。

もう一つの例を挙げましょう。騒がしい部屋で話すとき、騒音に負けないように自動的に声のピッチを上げることをご存知ですか?人間はどんな状況でも理解できますが、ニューラル ネットワークはこの特殊なケースを処理するようにトレーニングする必要があります。つまり、騒音の中で大声で話している人のトレーニング データが必要なのです。

Siri、Google Now!、Alexa などのプラットフォームで実行される音声認識システムを構築するには、大量のトレーニング データが必要になります。何百人もの人を雇って記録してもらわなければ、自分では得られないほど多くのトレーニング データが必要になります。ユーザーは低品質の音声認識システムに対して許容度が低いため、ケチることはできません。 80% しか機能しない音声認識システムを望む人はいません。

Google や Amazon のような企業にとって、実際の生活状況で録音された何万時間もの人間の音声は貴重なものです。これが、彼らの世界クラスの音声認識システムとあなたのシステムとを区別するものです。 Google Now! や Siri を無料で使用したり、Alexa を 50 ドルでサブスクリプション料金なしで使用できるようにする目的は、できるだけ多く使用してもらうことです。これらのシステムに対して話した内容はすべて永久に記録され、音声認識アルゴリズムの将来のバージョンのトレーニング データとして使用されます。これが彼らの本当の目的です!

信じられないですか? Google Now! がインストールされた Android スマートフォンをお持ちの場合は、ここをクリックして、これまでに話したすべての単語を聞いてください。

Alexa を通じて Amazon でも同じものを見つけることができます。しかし残念ながら、Apple は Siri の音声データへのアクセスを許可していません。

したがって、スタートアップのアイデアを探している場合、Google と競合する独自の音声認識システムを構築しようとすることはお勧めしません。代わりに、何時間も話している自分の録音を人々に提供してもらう方法を見つける必要があります。このデータはあなたの製品になることができます。

<<:  イノベーションに関する対話 - 51CTO 初の開発者コンテストが始まりました!

>>:  軍事分野における人工知能の浸透と応用に関する考察

ブログ    
ブログ    

推薦する

ドローン自動化システムの産業への応用を探る

世界中の企業は、競合他社に対して競争上の優位性を獲得するのに役立つ高度なテクノロジーを常に探していま...

他社がまだ「大型モデル」衛星を打ち上げている一方で、マイクロソフトはすでに開発者にその使い方を教えている。

春から夏へと移り変わる季節は、世界のトップテクノロジー企業が毎年恒例のイベントを開催する季節です。 ...

...

地図メーカーの次の戦い:AI戦争

新しいインフラの下で、産業インターネット、5G基地局建設、都市間高速鉄道と都市間軌道交通、新エネルギ...

...

オープン性とクローズ性の戦い: Baidu と Google のどちらの AI プラットフォームが優れているか?

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

思考連鎖CoTは思考マップGoTへと進化し、思考ツリーよりも優れたヒントエンジニアリング技術が誕生した

大規模言語モデル (LLM) の機能を最大限に活用するには、効果的なプロンプト設計ソリューションが不...

AIoT: IoTと人工知能の完璧な組み合わせ

産業用 IoT は、企業の神経系と考えることができます。つまり、生産工場のあらゆる場所から貴重な情報...

人工知能の力がどのように販売業界に革命をもたらしているか

販売業界が進化し続けるにつれて、販売チームが新規顧客を引き付け、既存顧客を維持するのに役立つ販売戦略...

視覚的な「脳の読み取り」:脳の活動から見える世界を再構築する

人間の知覚は客観的な刺激だけでなく過去の経験によっても形成され、それらが組み合わさって脳内で複雑な活...

53 フレームが 900 フレームになります。 AIを使えば高価な高速カメラなしでスローモーションが作れる

[[424523]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...

アルファベットのウィングがドローン配達サービスをダラス・フォートワース地域に導入

ドローンはまもなく、タイレノールとバンドエイドが詰まった小型容器を積んでダラス・フォートワース上空を...

完璧な最適化目標、AIの盲点

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

プログラマーは「正直な人が乗っ取る」ことを防ぐために Forgiveness アプリを開発したのでしょうか?

[[267886]]最近、あるニュースに衝撃を受け、言葉を失いました。そして、人々の収入がどこまで...

...