音声認識に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による顔修正技術は、肌を滑らかにしたり顔を変えたりする映画よりもはるかに優れている

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

ブログ    

推薦する

畳み込みニューラルネットワークに関する15の質問:CNNと生物視覚システムの研究と探究

CNN 開発の初期には、脳のニューラル ネットワークから多くのインスピレーションを得ました。現在では...

アンビエントコンピューティングが次の大きなトレンドになる理由

アンビエント コンピューティングとは、テクノロジーが環境にシームレスに溶け込み、日常生活に浸透する世...

...

...

...

Stability AIのCEOが大胆な発言:5年後には人間のプログラマーは存在しなくなる

最近、Stability AIの創設者兼CEOであるEmad Mostaque氏が再び衝撃的な発言を...

AIによる顔の改造の一般的な手法の詳細な説明

最近また「AI変顔」が流行っていますね。 Leiphone.com(公式アカウント:Leiphone...

世界トップジャーナルPNASに掲載されました!科学者たちは理論上のコンピューターに基づく意識モデル「意識のあるチューリングマシン」を提案した。

5月下旬、トップの国際学術誌である米国科学アカデミー紀要(PNAS)は、昨年10月に査読が受理され...

人工知能技術が英語学習にどのように役立つかについての簡単な議論

人工知能技術は私たちの日常の仕事、勉強、生活に溶け込み、静かに社会生活を変えています。人工知能技術は...

企業環境でのAIテクノロジーの活用

企業の世界における人工知能の利点は何でしょうか?企業分野における AI の主な利点の 1 つは、プロ...

AIをホームセキュリティに活用する方法

人工知能の台頭は、ホームセキュリティを含む多くの業界に大きな影響を与えています。人工知能は、監視カメ...

...

...

DeepFakeの頭部置換技術がアップグレード:浙江大学の新モデル、GANが美しい髪の頭部を生成

DeepFake は顔を本物らしく入れ替えることができますが、髪の毛の場合は同じことはできません。現...