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

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

ブログ    
ブログ    

推薦する

マイクロソフトはAIを活用して新しい電池材料を選別し、電池のリチウムの70%をナトリウムに置き換える

1 月 10 日、マイクロソフトの量子コンピューティング チームは、米国エネルギー省傘下のパシフィッ...

プログラマーに必要ないくつかの一般的なソートおよび検索アルゴリズムの概要

序文最近、アルゴリズムの基礎を固めるために、アルゴリズムの本にある基本的なアルゴリズムをもう一度見直...

...

GPT-4Vを試した後、マイクロソフトは166ページに及ぶ評価レポートを作成した。業界関係者:上級ユーザー必読

1週間前、ChatGPTはメジャーアップデートを受けました。GPT-4とGPT-3.5の両モデルは、...

JS データ構造とアルゴリズム_ソートおよび検索アルゴリズム

序文これは「JavaScript のデータ構造とアルゴリズムを学ぶ」の最後のブログです。これは、面接...

機械学習の巨匠マイケル・ジョーダン:すべてがAIと呼ばれるわけではない

近い将来、現実世界についての抽象的な推論を実行する能力において、コンピューターは人間に匹敵することは...

この目立たないロボットトラックにユニコーンが登場しました!

人工知能やビッグデータなどの技術の発展に伴い、チャットボットも大きな進歩を遂げています。その応用分野...

世界主要7カ国のAI戦略を総ざらい

21 世紀が近づくにつれ、各国の成功または失敗はもはや国民と政府指導者だけに依存するものではなくなり...

...

...

...

...

教師なし学習アルゴリズム: 異常検出

外れ値とは何でしょうか? Hawkins (1980) は外れ値の基本的な定義を与えました: 外れ値...