Pythonで音声からテキストへ変換【SpeechRecognition】

pythonで音声からテキストへ変換【speechrecognition】 プログラミング

「Pythonで音声認識を気軽に試してみたい」
「音声のテキスト変換を簡単に検証したい」
「SpeechRecognitionを使うには何をインストールすればよいの?」

このように思っている方は、この記事をご覧ください。
ネット上では、SpeechRecognitionに関しては情報が錯そうしています。

記事によって、インストールするライブラリがバラバラです。
さらには、全く利用しないライブラリをインストールしている記事もあります。
つまり、真似してはいけない手順があちこちに存在している状況です。

検証であれば、最小限のライブラリしかインストールしたくありませんよね。
そこで、Pythonで音声認識をするための最小構成をまとめました。
SpeechRecognitionを利用することが前提です。

本記事の内容

  • 最小構成でSpeechRecognitionを利用する
  • ライブラリのインストール
  • 【実証】音声のテキスト変換

最小構成でSpeechRecognitionを利用する

まずは、SpeechRecognitionについての説明です。
これを理解しておかないと、インストールすべきライブラリの判断ができません。

SpeechRecognitionとは?

公式
https://pypi.org/project/SpeechRecognition/

音声認識を実行するためのライブラリで、いくつかのエンジンとAPIをサポートしています。
そして、オンラインとオフラインの両方に対応します。

対応している音声認識エンジン/APIは以下。

  • CMU Sphinx(オフラインで動作)
  • Google Speech Recognition
  • Google Cloud Speech API
  • Wit.ai
  • Microsoft Bing Voice Recognition
  • Houndify API
  • IBM Speech to Text
  • Snowboy Hotword Detection(オフラインで動作)

SpeechRecognition単独で音声認識をしているのではありません。
エンジンやAPIを利用して、音声認識を実現しているということです。

では、どのエンジンやAPIを使えばいいのでしょうか?
検証で利用(もしくは個人利用)するケースに絞ります。

日本語対応は、前提です。
そして、無料も前提です。

エンジン/API 日本語対応 無料 備考
CMU Sphinx ×
Google Speech Recognition
Google Cloud Speech API ×
Wit.ai 人工知能API
Microsoft Bing Voice Recognition ×
Houndify API × × 音楽認識検索
IBM Speech to Text ×
Snowboy Hotword Detection × ホットワード検出

候補は、Google Speech RecognitionとWit.aiです。

ただ、Wit.aiは人工知能APIであり、ボットを作成するなどがメインです。
音声認識も可能のようですが、今回は候補から外します。

よって、Google Speech Recognitionを利用します。
これは、「Google Speech Private API」とも呼ばれています。
AndroidやGoogle Chromeに組み込まれているものですね。

SpeechRecognitionを動かすのに必要条件は?

Python 2.6, 2.7, or 3.3+

Pythonのバージョンです。
よほど古くない限りは、大丈夫です。

PyAudio 0.2.11+

マイクの音声を利用する場合には、必要です。
単純に音声ファイルを認識する場合でも、インストールしている記事が存在します。
その記事が検索で上位に出てくるから、それをコピーしたものが多いのかもしれません。

音声認識の検証であれば、PyAudioをインストールする必要はありません。

Google API Client Library for Python

Google Cloud Speech APIを利用する場合のみ、インストール必要です。
検証の場合は、インストール不要。

インストールするライブラリは?

検証レベルで動かす場合(マイク入力なし)であれば、SpeechRecognitionのみです。
つまり、音声ファイルをテキストに変換するだけなら、SpeechRecognitionのインストールだけで済みます。

ライブラリのインストール

SpeechRecognitionをインストールします。

pip install SpeechRecognition

以下のように表示されれば、インストール成功です。

Collecting SpeechRecognition
  Downloading https://files.pythonhosted.org/packages/26/e1/7f5678cd94ec1234269d23756dbdaa4c8cfaed973412f88ae8adf7893a50/SpeechRecognition-3.8.1-py2.py3-none-any.whl (32.8MB)
    100% |████████████████████████████████| 32.8MB 819kB/s
Installing collected packages: SpeechRecognition
Successfully installed SpeechRecognition-3.8.1

無駄なライブラリは、インストールしません。
必要な都度、ライブラリはインストールしましょう。

【実証】音声のテキスト変換

テキスト化する音声ファイルを用意します。
今回は、次のテキストを読んでいる音声ファイルを用意。

ベーステキスト

Pythonで音声からテキストへ変換。
このことを簡単に検証してみる。
そのためには、SpeechRecognitionのインストールだけでよい。
他の記事では、pyaudioなど無駄なライブラリもインストールしている。

音声ファイル「sample.wav」をスクリプト(実証コード)と同じフォルダに設置。
そして、実証コードを動かして、音声認識の結果とベーステキストを比較します。

それに加えて、他の音声認識エンジンによる音声認識も行っています。
日本語対応していて、デモページが用意されているもので検証しています。

  • Google Cloud Speech API
  • IBM Speech to Text

では、まずはSpeechRecognitionを実証コードで動かしてみます。

SpeechRecognition(音声認識エンジンはGoogle Speech Recognitionを利用)の認識結果

実証コード

import speech_recognition as sr

r = sr.Recognizer()

with sr.AudioFile("sample.wav") as source:
    audio = r.record(source)

text = r.recognize_google(audio, language='ja-JP')

print(text)

上記の実行結果

Python で音声からテキストへ変換 このことを簡単に検証してみる そのためには スピーチ レコグニションのインストールだけで良い 他の記事ではフリオなど無駄なライブラリ も インストールしている

難関は2か所。
SpeechRecognitionとpyaudio。

SpeechRecognitionは、適切に認識しています。
しかし、pyaudioは難しいですね。
そもそも、pyaudio自体が造語です。

音声の時点で「ペイディオ」と発音しています。
だから、これは他の音声認識エンジンでも同じような結果だと思います。

Google Cloud Speech API(サイトのデモ利用)の認識結果

デモページ
https://cloud.google.com/speech-to-text?hl=ja

Google Cloud Speech API(サイトのデモ利用)の認識結果
Python で音声からテキストへ変換このことを簡単に検証してみるそのためにはスピーチレコグニションのインストールだけで良い他の記事には治りをなど無駄なライブラリもインストールしている

「ではフリオ」と「治りを」だけの違いです。
僅差で、SpeechRecognitionの勝利。

IBM Speech to Text(サイトのデモ利用)の認識結果

デモページ
https://speech-to-text-demo.ng.bluemix.net/

IBM Speech to Text(サイトのデモ利用)の認識結果
Speaker 0: はいそれで音声からテキストへ変換。
Speaker 1: このことを簡単に検証してみる。
Speaker 2: そのためには。
Speaker 1: スピーチでCognitionのインストールだけで良い。
Speaker 0: 他の記事では。
Speaker 1: パウリーニョなど無駄なライブラリもインストールしている。

これは、ヤバい結果となりました。
Googleチームの圧勝ですね。

まとめ

Pythonで音声からテキストへ変換する方法を説明してきました。
無駄なライブラリをインストールすることなく、最小構成で検証できることを前提にしています。

結果的には、SpeechRecognitionのインストールだけで済みました。
そして、実際にコードを動かしてみました。

その結果は、スバラシイの一言です。
他の音声認識エンジンも試しましたが、それらにも全く劣っていません。

むしろ、勝っているぐらいです。
それに比べて、IBMの音声認識は酷い結果となりました。
まあ、Googleスゲーという結果でもありますね。

最後にまとめます。

SpeechRecognitionが、使えるのはわかりました。
検証成功と言えます。
これだけの成果を得られましたので。

ただ、Google Speech Recognitionがどれだけ利用できるのかが問題です。
具体的には以下。

  • 一度にどれだけの認識ができるのか?
  • 利用制限はあるのか?
  • 利用制限がある場合、どれくらい(データ量?呼び出し回数?)の制限なのか?

上記の問題がクリアできれば、SpeechRecognitionはかなり使えます。
そのためには、まずは上記問題の検証です。
検証内容は、別途記事にまとめます。

【追記】上記の問題を検証した結果は↓

タイトルとURLをコピーしました