プログラミング言語のひとつであるPythonは、ライブラリの豊富さやコーディングのシンプルさから、現在AI(人工知能)分野を中心に活躍しています。そのPythonでできることには画像処理や自然言語処理の他に、音声認識があり、現在注目が集まっています。
音声認識プログラムを作るのはなかなか難易度の高いことで、初心者が到底できるものではないと感じがちですよね。しかし、現在では誰でも参入しやすいような環境が登場し、初心者がPythonで音声認識プログラムを作成するハードルは下がっています。これにより、多くの人が音声の意味を解析したり、文字起こししたりすることが可能となりました。
知識はほとんどないけど、Pythonでプログラムを組んで音声認識を楽しんでみたい!という人もいるかもしれません。そこで今回は、初心者がPythonを使って音声認識プログラムを作る方法についてお伝えします。まずは、音声認識の仕組みや、Pythonで音声認識プログラムを作る仕組みについて説明しましょう。
Pythonで音声認識プログラムを作る、とはどういうことか
音声認識と言えばApple社のSiriを真っ先に思い浮かべる人も多いですよね。実は音声認識は他にも議事録作成ソフトや顧客満足度の測定、英会話レベルの評価などにも使われています。このような技術を実現するには、音声データの加工、パターン認識、単語の照合、文章の作成といった工程が一般的には必要です。さまざまな工程があり大変そうに見えますし、実際従来はひとつひとつの工程でひとつひとつ処理を作らなければならず、大変でした。
しかし、最近の音声認識はこれらの工程をまとめてひとつの処理できるようになり、初心者でもPythonで音声認識プログラムを作ることができるようになりました。このような技術的飛躍にはディープラーニングが関与しています。
ここまで、音声認識や、Pythonによる音声認識プログラムの作成について説明しました。ここから、Pythonで音声認識プログラムを作るためのツールとその使い方について解説します。まずはSpeechRecognitionです。
Pythonで音声認識を作る方法:SpeechRecognitionを使う場合
まずは、Pythonで音声認識プログラムを作るにあたって使い勝手の良いSpeechRecognitionというライブラリについて解説しましょう。ライブラリとは、プログラムを組む上で繰り返し使ったり、頻繁に使う機会があったりする“部品”を集めた便利ツールのこと。すなわち、SpeechRecognitionはさまざまな音声認識に特化したPythonのライブラリである、といえます。
SpeechRecognitionを用いてPythonで音声認識プログラムを作成するには、Pythonの開発環境を構築した後、SpeechRecognitionをインストールする必要があります。インストール方法は簡単で、Windowsではコマンドプロンプト、Macであればターミナルに以下のように打ち込んでください。
これだけで、SpeechRecognitionが利用できるようになります。次にコーディングについては、とりあえず動かしたい!という場合のPythonでの音声認識のサンプルプログラムがついているので、それを使えばコーディングはほぼ不要です。
コーディング後は組んだコードをもとにプログラムを実行し、音声認識を試すことができます。また、他のライブラリをインストールすることで、Pythonで可能となる音声認識の幅がぐっと広げることも可能になるでしょう。例えば、マイクロフォンからの入力にはpyaudioが必要で、SpeechRecognition同様に以下のように打ち込んでインストールします。
以上がSpeechRecognitionの使い方です。2番目はSpeech Serviceの使い方を解説します。
Pythonで音声認識プログラムを作る方法:Speech Serviceを使う場合
Speech ServiceはMicrosoft社のCognitive Servicesのひとつで、音声をテキストに起こすことの他に、テキストの読み上げ、や音声翻訳、音声合成を実行できるサービスです。Pythonの他にC++やJavaなどででも音声認識が開発できます。
Speech ServiceはSpeechRecognitionと異なり、事前に準備が必要です。Microsoft社のクラウドコンピューティングサービスであるAzureのアカウントと、Speech Serviceのサブスクリプションを所有しましょう。
Pythonで音声認識プログラムの開発をするには、Speech SDKをインストールする必要があり、この点はSpeechRecognition と類似しています。以下をコマンドプロンプトやターミナルに打ち込んでください。
これであとはコーディングをおこない、プログラムを作成する、という流れになります。作り方次第で、マイクからの音声認識や音声ファイルからの音声認識など、Speech ServiceでのPythonの音声認識はさまざまなことが可能です。
ここまでSpeech Serviceの解説をしました。3番目に解説するのはAmazon Transcribeについてです。
Pythonで音声認識プログラムを作る方法:Amazon Transcribeを使う場合
Amazon Transcribeはその名の通りAmazon社の音声認識サービスで、AWS SDK for Pythonを使うことで、Pythonで音声認識プログラムを自分で作ることが可能です。AWS SDKとはアマゾンウェブサービス(AWS)から提供されているソフトウェア開発キット(SDK)のことで、AWS SDK for PythonはBotoとも呼ばれます。
全体の流れのメインは、音源のアップロードと文字起こしジョブのふたつに大別できます。音源のアップロードはS3パケットと呼ばれる専用の“容器”にしなければなりません。ここではS3パケットの作成と、そこへの音源のアップロードを、AWS CLIを利用しておこないます。
文字起こしジョブからは、AWS SDK for Pythonを利用しておこないましょう。ジョブの開始から結果の確認、結果の取得と表示まで一連の流れをプログラミングし、最終的にはデータの削除までいけば完了です。
4番目に解説するのは、Google社のSpeech-to-textです。
Pythonで音声認識プログラムを作る方法:Speech-to-textを使う場合
Speech-to-textの名を関しているツールはいくつか存在しますが、ここで紹介するのはGoogle社のSpeech-to-textです。Speech-to-textはGoogleのAIテクノロジーを活用したAPIで、正確な音声-テキスト変換をおこなう優れもの。Pythonと組み合わせることで、例えばリアルタイムでの変換といった、より高度な音声認識プログラムを作成できます。
前提として、プロジェクトを作成または選択をしてSpeech-to-text APIを有効にしましょう。その後、Python3.7.6環境下では以下のような文をコマンドプロンプトやターミナルに打ち込み、pyaudioや必要なパッケージなどをダウンロードします。
その後、ここまで紹介してきたサービスと同様に、Pythonでコーディングをおこない、音声認識プログラムを作っていきます。GoogleのAPIのドキュメントにサンプルがあるので、参考にすると良いでしょう。
最後に解説するのは、Juliusの使い方です。
Pythonで音声認識プログラムを作る方法:Juliusを使う場合
Juliusは「汎用大語彙連続音声認識エンジン」で、数万語彙の連続音声の認識を家庭用PCやスマートフォンで実行できるという、強力で軽量なエンジンとなっています。Juliusは単体では動かず、音声認識を行うためには音素ごとの音声波形パターンモデル(音響モデル)、単語の読みの載った電子上の辞書(単語辞書)、単語間の接続を判断する言語モデルが必要ですが、公式ページなどで入手可能です。
Juliusは単にエンジンとして使えるわけではなく、例えばRaspberry Piというカードサイズの小型のコンピュータと組み合わせることで、スマートスピーカーのようにカメラを声で操作したり、特定の言葉に機械を反応させたりすることもできるのだとか。このとき選択されるプログラミング言語がPythonであったりします。
さて、今回は初心者がPythonを使って音声認識プログラムを作る方法についてお伝えしました。ニューラルネットワークの登場により、音声認識プログラム開発工程が一元化したことや、PythonとAI(人工知能)の相性の良さからPythonで音声認識プログラムを作ることは一般的になりました。
Pythonによる音声認識プログラムの開発手段は様々ですが、今回紹介したのはSpeechRecognitionを使う方法、Speech Serviceを使う方法、Amazon Transcribeを使う方法、Speech-to-textを使う方法、Juliusを使う方法、の5つでした。いずれも必要なライブラリやパッケージをインストールしたり、設定したりする手間はありますが、あとは基本的にプログラミング作業になります。場合によってはサンプルコードがあるので参考にすると良いでしょう。
主な音声認識は今回紹介したものですが、応用する余地はまだまだあり、大きな可能性を秘めています。音声認識を極めたい初心者も、ちょっとだけいじりたい初心者も、まずはインストールから始めましょう。