音声認識にPythonを使用する方法を教えます

音声認識にPythonを使用する方法を教えます

[[282998]]

オンラインでいくつかの例を見つけましたが、音声をテキストに変換できる成熟したモデルがいくつかあります。たとえば、Cloud Speech API ですが、Google Cloud Platform を使用する必要があります。

音声認識

非常に成熟した接着言語である Python の場合、インターネット上で既成のツールキットを見つけるのは実際には難しい問題ではありません。 GitHubでこんな魔法のようなパッケージを見つけました: 音声認識

もちろん、リアルタイム翻訳をサポートできますが、前提条件として、マシンにマイク依存パッケージがインストールされている必要があります。また、音声ファイルからのテキストの直接抽出もサポートできます。音声認識を通じて、Google API、CMU sphinx、Microsoft Bing Speech、IBM Speech to Text、Wit.ai など、さまざまなプラットフォーム上のモデルを呼び出すことができます。

オフライン変換

国内ネットワーク環境では、本パッケージを呼び出す際にGoogleに接続する必要があるため、Google APIを使用して音声データをテキストファイルに変換することはできません。もちろん、これを実行するために海外の VPS をレンタルすることもできます。

ここでは、インターネット接続なしで Python を使用して音声ファイルをテキストに変換する方法について説明します。ここで使用するパッケージは、米国カーネギーメロン大学が開発した大語彙・非特定人物・連続英語音声認識システムである sphinx です。

スフィンクスをインストールする

私が使用している環境はUbuntuです。

  1. imyin@develop:~/ダウンロード/phinx$ lsb_release -a
  2. 使用できる LSB モジュールはありません
  3. ディストリビューターID: Ubuntu
  4. 説明: Ubuntu 16.04.3 LTS
  5. リリース: 16.04
  6. コードネーム: ゼニアル

Sphinxをインストールする前に、いくつかのパッケージをインストールする必要があります

  1. sudo apt-get install gcc automake autoconf libtool bison swig python-dev libpulse-dev

その後、関連するウェブサイトからsphinxbaseインストールパッケージをダウンロードするか、GitHubでパッケージを直接クローンすることができます。

ダウンロード後、解凍してください

  1. tar zxpf sphinxbase-5pr​​ealpha.tar.gz

ファイル名を変更する

  1. mv sphinxbase-5pr​​ealpha sphinxbase
  2. ls スフィンクスベース
  3.  
  4. 著者 doc indent.sh Makefile.am README.md src win32
  5. autogen.sh .git ライセンス ニュース sphinxbase.pc. swig
  6. configure.ac には m4 README が含まれています sphinxbase.sln テスト

ここで、autogen.sh を実行して、後続のコンパイルとインストール用の Makefile とその他のスクリプトを生成する必要があります。

  1. ./autogen.sh

以下のソースコードのインストールを開始してください

  1. sudo を実行してインストールします

上記のコマンドを実行した後、エラー メッセージが表示されない場合は、インストールは成功していますが、この時点ではコマンドは有効にならないため、コマンドを実行するとエラーが表示されます。

  1. imyin@develop:~/Downloads/phinx/sphinxbase$ sphinx_lm_convert
  2. sphinx_lm_convert: 共有ライブラリのロード中にエラーが発生しました: libsphinxbase.so.3:共有オブジェクトファイルを開けません:そのようなファイルまたはディレクトリはありません

また、システムが/usr/local/libディレクトリをロードできるようにする必要があります。システムが起動するたびに自動的にロードできるようにするには、システム構成ファイルld.so.confを変更します。

  1. sudo echo "/usr/local/lib" >> /etc/ld.so.conf
  2. sudo ldconfig

この時点で、sphinx_lm_convertコマンドを使用して、モデルDMPファイルをbinファイルに変換できます。

  1. sphinx_lm_convert -i zh_broadcastnews_64000_utf8.DMP -o zh_CN.lm.bin

上記のコード行は、中国語モデルの DMP ファイルを bin ファイルに変換します。 sphinx をインストールした後、デフォルトでは英語のみがサポートされます。モデルが保存されているパスには en-US というファイルが 1 つだけあるため、中国語を処理するモデルを追加する必要があります。関連ファイルは、この Web サイトからダウンロードできます。

[[282999]]

PythonでSphinxを使用する

Python で Sphinx を使用する場合は、いくつかの依存パッケージをインストールする必要があります。

  1. pip install pydub -U # MP3 ファイルを wav ファイルに変換する役割を担う
  2. pip install SpeechRecognition -U # 音声をテキストに変換する役割を担う
  3. sudo apt -qq install build-essential swig libpulse-dev # Pocketsphinxのインストールの準備
  4. pip install -U Pocketsphinx # sphinxを使用するには
  5. sudo apt-get install libav-tools # pydub を呼び出すときに表示される警告を解決するには: RuntimeWarning: ffmpeg または avconv が見つかりませんでした - ffmpeg をデフォルトとしますが、動作しない可能性があります warn(" ffmpegまたはavconv が見つかりませんでした - ffmpegデフォルトとしますが、動作しない可能性があります 作業"、RuntimeWarning)

この時点で、ipython を起動して効果を試すことができます。

  1. ファイルパス = '/home/imyin/Downloads/phinx/test_data'  
  2. r = sr.認識子()
  3. hello_zh = sr.AudioFile( os.path.join (file_path, 'test.wav' ))
  4. hello_zhソースとして:
  5. オーディオ = r.record(ソース)
  6.  
  7. r.recognize_sphinx(オーディオ、言語= 'zh_CN' )
  8.  
  9. 「今日の天気はとても」  

音声認識機能が有効になっていることがわかります。しかし、私が言ったのは「今日はとても暑いですね」でした。

スフィンクスのモデルはあまり正確ではなく、単なる短い文章になっているようです。次に、長い文章の効果を見てみましょう。村上春樹の『走ることについて語るときに僕の語ること』の一節を録音しました。

その年の7月、私はギリシャに行き、アテネからマラソンまで一人で走りました。マラソンの本来のルートであるマラソンからアテネまでを逆方向に走りました。なぜ反対方向に走るのでしょうか? 道路が混雑し、空気が汚染される前に、早朝にアテネの中心部から出発し、街を抜けてマラソン会場に直行すれば、道路の交通量が大幅に減り、より快適に走れるようになるからです。これは公式レースではありません。一人で走ることもできますし、もちろん交通規制も期待できません。

  1. hello_zh = sr.AudioFile(os.path.join ( file_path, 'test2.wav' ))
  2. hello_zhソースとして:
  3. オーディオ = r.record(ソース)
  4.  
  5. r.recognize_sphinx(オーディオ、言語= 'zh_CN' )
  6.  
  7. 「南銀陽の立場は豚にゴミを処理させるようなものです。土木工学は温かさに満ちたスポーツをすることで成功することができますか?」彼はインドネシアビジネスデイリーに話を止め、そのことについて話す立場がないわけではないと言いました。春には、アテネの中心部から始めて、インチ工場は首尾よく突破し、マラソンとアラ山の活動を禁止するための調整機関の改善を求めています。 20チームの中で、これは通常のゲームではないことが繰り返し強調されています。もちろん、私はこれまで一人でいましたが、このコンセンサスが何であるかを説明することはできません。」  

さて、結果を見ると、一言で言えば「ひどい」ということしか言えないと思います。それを2つの言葉で表すと、「残念だ!」

もちろん、このモデルはインターネットから直接ダウンロードしたものです。トレーニングに使用されるコーパスはそれほど完全ではないため、テスト中に不正確さが生じるのは避けられません。モデルの精度を高めるには、sphnix を使用してモデルのトレーニングを継続する必要があります。

関連する方法は公式ウェブサイトに掲載されており、対応するチュートリアルもあります。興味のある友人は自分で調べることができます。

  1. Q: 精度が低いのはなぜですか?  
  2. 音声認識の精度 必ずしも優れているわけではありません音声認識をテストするには、事前に録音された参照データベース認識を実行する必要があります。  何が起こるかを確認しパラメータを最適化します。  
  3. 未知の遊ぶ必要はありません最初にべきこと データベースを収集する テストサンプルを作成し認識精度を測定します。音声発話をwav ファイルダンプし、参照テキストファイルを書き込んデコーダーを使用してデコードする必要あります次に、Sphinxtrainword_align.pl ツールを使用して WER を計算します。テストデータベース サイズは精度によって異なりますが、通常は認識精度を確実にテストするには10 分間書き起こし音声あれば十分です。プロセスについては、 tutorialtuning説明されています

記事に記載されているチュートリアルの URL は https://cmusphinx.github.io/wiki/tutorialtuning/ です。

Google API

Google API を使用して音声認識を処理すると、かなり正確になりますが、Google への接続が必要です。以下は、VPS で実行したコードの一部です。ご覧のとおり、録音が正確にテキストに変換されています。

しかし、録画ファイルが大きいと、実行に時間がかかり、タイムアウト エラーが返されるため、非常に煩わしいです。

幸いなことに、speech_recognition は音声ファイルの傍受と処理をサポートしています。たとえば、音声ファイルの最初の 15 秒だけを処理できます。

  1. ソースとしてテストを使用する場合:
  2. オーディオ = r.record(ソース、継続時間=15)
  3. r.recognize_google(オーディオ、言語= 'zh-CN' )
  4. 「その年の7月にギリシャに行き、アテネからマラトン川まで一人で走りました。アテネからマラトン川までの本来のマラソンルートを走りたかったんです。」  

上記の結果から判断すると、その効果は sphnix で処理されたものよりもはるかに優れています。

ヘルプドキュメントを読んでみると、speech_recognition は前の録音だけでなく途中の録音もキャプチャできることがわかりました。

  1. [18]では: r.record?
  2. シグネチャ: r.record(source,duration=None, offset=None)
  3. ドキュメント文字列:
  4. ` ` source`` (`AudioSource`` インスタンス)から` ` offset`` (または 指定されていない場合は先頭付加されます)``AudioData`` インスタンス変換して返します
  5.  
  6. 「期間」 指定されいない場合  オーディオ入力がなくなりました。

たとえば、5 秒から 20 秒の間のコンテンツを処理したいとします。

  1. ソースとしてテストを使用する場合:
  2. オーディオ = r.record(ソース、オフセット=5、継続時間=15)
  3. r.recognize_google(オーディオ、言語= 'zh-CN' )
  4.  
  5. 「アテネからマラソンまで一人で走りたい。マラソンの本来のルートはどれ?マラソンからアテネまで一直線。なぜそんなことを考える必要がある?アテネの中心から星が変わるから。」  

今日はこれで終わりです。世界は本当に素晴らしいです。そして、発見すべき素晴らしいものがまだまだたくさんあります!

<<:  では、「ジェミニ・キラー」が興行的に失敗したとしても、どうだろう?アン・リーのAIによる顔修正技術は、肌を滑らかにしたり顔を変えたりする映画よりもはるかに優れている

>>:  自動運転はトラック運転手の失業を加速させている

ブログ    
ブログ    
ブログ    
ブログ    
ブログ    

推薦する

人工知能、機械学習、ディープラーニングの違い

私たちは皆、「人工知能」という言葉をよく知っています。結局のところ、ターミネーター、マトリックス、エ...

...

...

MITジェネシス核融合が世界記録を更新!高温超伝導磁石が恒星のエネルギーを解放、人工太陽が誕生するのか?

クリーンエネルギーの聖杯は征服されたのか? 「MITチームは、一夜にして核融合炉のワット当たりコスト...

...

Llama2がオープンソース化された後、国内の大型モデルはどのような展開を見せるのでしょうか?

7 月 19 日、オープン ソース コミュニティの最も強力な大規模モデルが Llama から Ll...

Ctrip における Flutter マップのベスト プラクティス

著者についてCtrip のシニア モバイル開発エンジニアである Leo は、クロスエンド テクノロジ...

OpenAI が静かに「価値観」を変更: AGI に全力で取り組んでいないなら関与しないでください

OpenAI はひっそりとその中核となる価値観を変えました。公式ウェブサイトに掲載されている6つのコ...

エッジAIデバイスの選び方

エッジ コンピューティングは、最も話題になっているテクノロジ トレンドの 1 つになりました。こうし...

2021年にAIは暗号通貨分野に参入するでしょうか?

この記事は公開アカウント「Reading Core Technique」(ID: AI_Discov...

VRシルキーパノラマはもうすぐそこ? Googleの360°NeRFは人々に未来を垣間見せる

少し前に、CVPR 2022 が今年の論文採択結果を発表しましたが、これは提出された論文がようやく沈...

ビッグモデルがAlibaba Cloudを救った!

執筆者 | Yan Zheng 「スピンオフ」によりアリババは再生し、ビッグモデルによりアリババクラ...

機械学習はインビザラインの患者が完璧な笑顔を手に入れるのを助けている

モバイル コンピューティングのトレンドにより、企業はスマートフォンから情報にアクセスし、タスクを完了...

Amazon AWSが新しいAIチップをリリース、Nvidia H200も提供

11月29日、米国時間火曜日に開催されたReinventカンファレンスにおいて、アマゾンのクラウドコ...

インテリジェントオートメーション: コンピュータビジョン、AI、ARが統合されるとき

インテリジェント オートメーションは、業界がまだビジネスに統合していない、かなり新しい概念です。この...