テクノロジー

これで音声テキスト化が楽になる!Pythonで音声認識を作る方法

これで音声テキスト化が楽になる!Pythonで音声認識を作る方法

最近ではPythonでプログラミングをしたり、AI(人工知能)を使ったりする人が増えていますよね。

Pythonでプログラミングして作れる物の一つに、音声認識があります。以前は音声認識の精度があまり良くありませんでしたが、近年、音声認識の精度は驚くほど向上し、色々な言語の違いだけではなく、方言まで認識することができるようになったとのこと。さらに、さまざまなAPIの登場などにより、音声認識のプログラムを作成した経験がない人でも簡単に、Pythonで音声認識ができるようになりました。

とはいえ、何も知らない状態でいきなり音声認識を作るのはやはり難しいでしょう。そこで今回は、Pythonで音声認識を作る方法についてお伝えします。1つ1つ丁寧に解説していくので、Pythonの音声認識の作り方について、一緒にマスターしましょう!

Pythonで音声認識を作る仕組み

音声認識のイメージ

それではまず、Pythonで音声認識を作る仕組みについて解説します。

本来の音声認識には、いくつかのステップがあります。例えば、最初のステップとして、入力された音声データから周波数や音の大きさなどの特徴量を取り出す必要があり、次のステップでは、取り出した特徴量からどのような「音」が発音されていたか(たとえば「あ」や「A」など)、特定することが必要です。

ところが、最近の音声認識では今まで複数のステップでおこなっていた処理を、1つのニューラルネットワークでまとめて処理することができるようになりました。これはなぜかというと、ディープラーニングが使われるようになったためです。

音声認識に使われるニューラルネットワークの1つに、再帰型ニューラルネットワーク(RNN)という、時系列データに特化したニューラルネットワークがあります。ニューラルネットワークはもともと生物の脳をモデルにしたものですが、RNNでは短期記憶ができるような工夫を追加することで、時系列に特化した処理ができるようになっています。時系列データというと、株価などを思い浮かべてしまうかもしれませんが、音声や言語も立派な時系列データの1つです。

※RNNについてはこちらの記事でも取り上げています

たとえば、「これは ペン です」を「です これは ペン」と並び替えたら意味が通じませんよね。このように、単語の順序が意味をもつ音声・言語は、RNNを使って、時系列データとして処理することが可能です。

RNNや、RNNを使った音声認識はディープラーニングの中でも研究が盛んな分野であるため、誰でも簡単にRNNや音声認識が使えるように、Pythonのライブラリやフレームワークがたくさん存在しています。たとえば、Cloud Speech-to-TextやTensorFlowなどは初心者でも簡単に使うことができるため、わざわざモデルの構築や訓練をする必要がなく、とても便利でしょう。

次の章からは、簡単に音声認識のプログラムを作ることができるライブラリを使用して、Pythonを使った音声認識のプログラムを作る準備をします。

Pythonで音声認識を作る前に、やるべき下準備

Googleのイメージ

Pythonで音声認識のプログラムを作る前に、少しだけ下準備が必要です。少しややこしく感じるかもしれませんが、この下準備さえできれば、音声認識のプログラムは意外と簡単に作ることができます。

音声認識には、GoogleのCloud Speech-to-Textを使用します。この記事の範囲内では無料で使えますが、アカウントの作成が必要なため、まずはアカウントを作成しましょう。Cloud Speech-to-Textの公式ドキュメントを参考にすれば、簡単にアカウントの作成と初期設定をすることができます。

 

  1. まずはCloud Speech-to-Textを使うために、Google Cloudでプロジェクトを作成し、Cloud Speech-to-TextのAPIを有効にします。ここで、秘密鍵がダウンロードできるので、しっかりと保存しておきます。
  2. 先ほどダウンロードした秘密鍵を「GOOGLE_APPLICATION_CREDENTIALS」という環境変数に適用します。
  3. Cloud SDKをインストールし、初期化します。

以上で設定は完了です。それでは、次の準備に移りましょう!

次は、コマンドを使用してCloud Speech-to-Textのライブラリをインストールします。コマンドを開き、こちらのコードを実行してください。

##############################
pip install –upgrade google-cloud-speech
##############################

コマンドが問題なく実行できたら、Pythonで音声認識を作る前の下準備は完了です!次の章では、実際にPythonで音声認識のプログラムを作りましょう。

Pythonで音声認識のプログラムを作る方法

プログラムのイメージ

それでは、いよいよPythonで音声認識のプログラムを作成します。

まずは、プログラムのコードを書くためのPythonファイルを作成しましょう。ファイルを作成したら、こちらのコードをコピーしてください。なお、こちらのコードはCloud Speech-to-Textの下記公式ドキュメントを一部編集したものになっています。

##############################
from google.cloud import speech_v1
from google.cloud.speech_v1 import enums
import io
def sample_recognize(local_file_path):
client = speech_v1.SpeechClient()
language_code = “en-US” # 言語コードを設定
sample_rate_hertz = 16000 # 周波数を16000
# データのエンコード
encoding = enums.RecognitionConfig.AudioEncoding.LINEAR16
config = {
“language_code”: language_code,
“sample_rate_hertz”: sample_rate_hertz,
“encoding”: encoding,
}
with io.open(local_file_path, “rb”) as f:
content = f.read()
audio = {“content”: content}
response = client.recognize(config, audio)
for result in response.results:
alternative = result.alternatives[0] # 最初の候補である効率が最も高い
print(u”Transcript: {}”.format(alternative.transcript))
if __name__ == ‘__main__’:
sample_recognize(‘音声ファイル’) # 音声認識したいファイルのパスを指定
##############################

ファイルにコードを記入したら、実際にプログラムを実行しましょう!すると、プログラムの実行結果はこのようになります。

Transcript: how old is the Brooklyn Bridge

このように、Pythonで簡単に音声認識のプログラムを作ることができましたよね。ちなみに、この記事で使用した音声は英語でしたが、もちろん日本語の音声認識をすることも可能です。日本語で音声認識をしたい場合は、上記のコードの一部を、以下のように変更しましょう。

##############################
# 言語コードを変更
# language_code = “en-US” <- 変更前のコード
language_code = “ja-JP” # 変更後のコード
##############################

これで、日本語の音声でも問題なく認識することができるようになりました。なお、このほかにもGoogleのCloud Speech-to-Textでは120の言語に対応しています。

Pythonの音声認識が使われている参考例:Google Speech-to-textのAPI

マイクのイメージ

前の章では、実際にPythonで音声認識のプログラムを作る方法について解説しましたが、この章では、前章で音声認識プログラムを作る際に使用した、GoogleのCloud Speech-to-TextのAPIについて解説します。Cloud Speech-to-Textについてより詳しく知ることで、Pythonの音声認識について理解を深めましょう!

音声認識のAPIは、GoogleのCloud Speech-to-Textをはじめ、AmazonやFacebook、IBMなどの音声認識APIや、iPhoneに搭載されているSiriのAPIまで、さまざまです。無料のAPIから有料のAPIまでありますが、その中でもGoogleのCloud Speech-to-Textには、他のAPIにはない特徴がたくさんあります。

Speech-to-Textがもつ大きな特徴の1つは、この音声認識APIが、120以上の言語と方言を認識が可能なこと。他の音声認識APIが認識できる言語数は多くてもたいていは20言語くらいなので、Googleの音声認識の優秀さが際立っています。

また、Speech-to-Textには音声認識の方法が3つあることも、大きな特徴の1つです。Speech-to-Textでは、1分以内のデータであれば同期認識、それ以上のデータであれば、なんと8時間のデータまで非同期認識ができるのだとか。

そして、さらに便利なのがストリーミング認識。ストリーミング認識では、マイクなどから認識した音声をリアルタイムで解析し、ユーザーの話と同時進行で音声を認識できます。ここまでくると、AI(人工知能)だけで通訳が完全に成り立つ未来も遠くはないと考えてしまいますよね。

なお、Speech-to-Textでは、60分まで無料で音声認識をすることができます。Speech-to-Textには他にもさまざまな機能があり、細かい設定などもできるため、気になったらいろいろな音声認識にチャレンジしましょう!

プログラムを作るときの注意点

文字起こしのイメージ

Pythonの音声認識と音声認識APIについて理解が深まったところで、Pythonで音声認識プログラムを作るときの注意点をお伝えします。

まず、プログラムが音声を正しく認識してくれない可能性があ流ので気をつけましょう。最近の音声認識プログラムはかなり正確になっているため、単純な認識ミスというのは少ないです。ただし、現状のPythonの音声認識プログラムでは、私たちの話す音声を100%正しく認識することはできません。

たとえば、「Python」ではなく「Pyson」という文字を認識させようとした場合、おそらくプログラムは「Python」と認識してしまいますよね。このように、特殊な条件では正しく音声認識できない可能性があります。また、単純な例でもしばしば認識ミスがあるため、重要な場面では使用を十分に検討するようにしましょう。

次に問題なのは、プライバシーです。音声認識はGoogleのAPIを使用しているため、(Google以外のAPIでも同様に)情報漏えいのリスクを懸念しておく必要があります。もし音声認識プログラムをサービスの1つとして提供する可能性があるならば、プライバシーの問題について慎重に検討する必要があるでしょう。

最後に、APIを使うコストが想定よりも大きくなってしまうリスクがあります。GoogleのCloud Speech-to-Textでは、60分まで無料で音声認識をすることができますが、60分の無料枠を超えた場合、デフォルト設定の標準モデルで15秒ごとに約0.6円の料金が発生してしまうため注意が必要です。

まとめ

さて、今回はPythonで音声認識を作る方法についてお伝えしました。今回の記事についてまとめると、このような内容になります。

  • Pythonで音声認識を作るとき、再帰型ニューラルネットワーク(RNN)が重要な仕組みの1つである
  • Pythonで音声認識を作る前にやるべき下準備は、Cloud Speech-to-Textライブラリのインストール
  • Pythonで音声認識のプログラムを作るためには、Cloud Speech-to-TextのAPIを使用する
  • Pythonの音声認識が使われている参考例の1つが、Cloud Speech-to-Textである
  • Pythonで音声認識のプログラムを作るときの注意点は、認識ミス・情報漏えい・想定外のコストの3つである

PythonでGoogleのCloud Speech-to-Textを使用することで、とても簡単に音声認識のプログラムを作ることができます。これを機に、音声認識プログラムの作り方や注意点をしっかりと理解してさまざまな音声認識にチャレンジしましょう!

トップへ戻る
タイトルとURLをコピーしました