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

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

推薦する

回答 2024: 生成 AI は「スーパー アプリ」になるか?

ゲスト: 陳斌、黄文馨ホスト | ユン・チャオノア著制作:51CTO テクノロジースタック(WeCh...

動的グラフのディープラーニング - 時系列グラフネットワークモデリング

インターネットから収集したコンテンツさまざまな性質のトランザクション ネットワークや社会的つながりを...

WeChatグループに広告を投稿する人が常にいるのでしょうか? Pythonを使って自動ロボットを作成し、彼を排除する

[[341536]] WeChatグループ乾癬とは、WeChatグループ内の他のユーザーに恥ずかしげ...

...

専門家が使用する 15 個の機械学習ツール

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

産業オートメーションにおけるコンピュータビジョンの応用と利点

コンピューター ビジョンは、製造および生産プロセスを自動化および最適化して、効率を高め、製品の品質を...

コードのスキャン、顔認識、人工知能、「インターネット+」...デジタル中国はあなたと私の人生を変えます!

[[264426]]第1回デジタル中国建設サミットのテーマは「情報化で近代化を推進し、デジタル中国...

...

...

世界的な「AI+教育」の波が到来、第3回AIAEDグローバルAIインテリジェントアダプティブ教育サミットのハイライトは「ネタバレ」

最近、ファーウェイの創業者任正非氏はインタビューで、自分が最も関心を持っている問題は基礎科学研究と教...

ICLR2021 対照学習 NLP 論文進捗レビュー

みなさんこんにちは。私はDiaobaiです。今回は、ICLR2021のNLP分野の論文を6本選んで解...

AI は予測分析にどのように役立ちますか?

今日、企業はビッグデータ分析を活用し、データ洞察を通じて製品機能を強化し、競争の激しいダイナミックな...

人民日報のYitu Zhu Longの記事:今後10年間は​​AIコンピューティングパワーの「スーパームーア時代」となる

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

ViTと競合するDeepMindは、スパースモデルからソフト混合エキスパートモデルに移行

大規模モデルが驚くべきパフォーマンスを示したため、モデルのサイズはモデルのパフォーマンスに影響を与え...

量子化学計算と機械学習に基づいて、肉眼で検出可能な蛍光分子をゼロから作成する

蛍光分子を設計するには、分子の光吸収など、分子構造に直接関連するものだけでなく、相互に関連する複数の...