// // //

Pythonで日本語を音声認識をして音声をテキスト化し、それを音声合成して発音する方法簡単解説【オウム返し by Mac その1:音声認識編】

speech_recognition_00 Programming
speech_recognition_00
この記事は約5分で読めます。

音声の入出力(音声認識音声合成)をPythonを使ってMacで行うことが必要になりました。とりあえずMacに日本語で話しかけると、その音声を認識してテキストデータに変換し、そのテキストデータを音声合成により音声で返してくれる、つまり”オウム返し”をしてくれるコードを作ってみました。

思いの外、簡単にできたのですが、記事としては長くなってしまったので、本記事では音声認識の部分のみを説明します。みなさんと情報の共有できれば良いなと思っています。

この記事を読んで、できるようになる事

speech_recognition_03
speech_recognition_03

Mac上でPythonを使って、Macに話しかけたあなたの言葉(日本語)をテキストデータに変換できるようになります。

この次の記事では、Pythonを使って、テキストデータ(日本語)を音声合成により発音する方法を解説します。

環境設定

ぼくの環境は以下の通りです。

  • OS : MacOS Mojave 10.14.6
  • Python : version 3.6.5
  • Hardware : MacBook Pro 2016
  • IDE : Jupyter Lab

Jupyter Labは比較的新しいIDE(Integrated Development Environment)なので、まだ導入されてない方で、興味のある方は、ぼくの記事JupyterLabとJupyterNotebookの違いを簡単に解説【Mac】をのぞいてみてください。要は、Jupyter Notebookの後継機です。

音声認識

speech_recognition_02
speech_recognition_02

概要説明

ここでは、SpeechRecognitionというPythonのライブラリを使い、音声認識を行います。このライブラリはAPI(Application Programming Interface)を基本的にオンラインで使い、音声認識を行うものです。

いくつかのAPIから選択(詳細は後述)できますが、ここではdefaultの"Google Web Speech API"を使用します。このAPIは唯一、登録無しつまり、無料で使えるAPIです。(2020年6月時点)また、音声認識を行うには、インターネットに接続している環境が必要です。
またこれは、使用時間が1時間を超えると有料になるGoogle Cloud Speechとは異なるAPIです。

この記事を書くにあたって、インターネットでライブラリであるSpeechRecognitionと音声認識のためのAPIとの関係を調べたのですが、日本語の資料では、残念ながらきちんと説明しているものを見つけることができませんでした。

最終的に英文の資料をもとにその関係を理解しました。以下に参照した英文の資料のリンクとこの記事にたどり着いた皆さんが知りたいであろう項目をザクっと和訳したものを置いておきます。このことを理解しなくてもこの記事の内容は理解していただけると思いますが、興味のある方は、目を通してみてください。

The Ultimate Guide To Speech Recognition With Python – Real Python
An in-depth tutorial on speech recognition with Python. Learn which speech recognition library gives the best results and build a full-featured "Guess The Word"...
SpeechRecognition
Library for performing speech recognition, with support for several engines and APIs, online and offline.

SpeechRecognitionでは以下のAPI(もしくはEngine)を使用することができる。

  • CMU Sphinx
  • Google Speech Recognition
  • Google Cloud Speech API
  • Wit.ai
  • Microsoft Bing Voice Recognition
  • Houndity API
  • IBM Speech to Text
  • Snowboy Hotword Detection

このうち、CMU SphinxとSnowboy Hotwood Detectionはオフラインでも使用できる。この中で、Google Speech Recognitionのみが、登録無しで使用できる。またSpeechRecognitionのdefault設定もGoogle Speech Recognitionである。

実装

それでは、早速実装していきましょう。ライブラリとしては前述の”SpeechRecognition”とマイクを通して音声を入力するために、”pyaudio”を使います。

上記のコードによって、JupyterLabからライブラリのインストールができます。ターミナルから行う場合は、pipの前にある"!"を省略してください。
念の為、2つのライブラリが間違いなくインストールされたか、確認しておきましょう。

上記のコードを実行させると、すでにインストールされているライブラリの一覧が表示されます。2つのライブラリがちゃんとストールされているか確認しましょう。

それでは、上記のコードをJupyterLabから入力して、実行してみましょう。
何かお話ししてください。と催促してくるので、内蔵マイクの近く(ぼくのMacbook Proだと左側スピーカーの近く)で何か日本語を話しかけてください。かなりの精度で日本語を認識してくれます。

ループで催促を続けてくるので、止める時は”終わりだよ”と教えてあげて下さい。

ちなみに15行の"ja-JP"を"en-US"に変更すると、英語として音声認識を行ってくれます。英語の発音に自信のある方は、試してみて下さい。また、その際、23行の"終わりだよ"は何か適当な英語のフレーズに変更して下さいね。

まとめ

specch_recognition_04
specch_recognition_04

オンラインでAPIの助けを借りているとは言え、こんな簡単だコードでこれだけの精度の音声認識を実装できることは驚きに値すると思います。みなさんはどう思われましたか。

次の記事では、テキストデータを音声合成を行なってMacに音声として返してもらう実装を説明していきたいと思います。

それでは、今回はここまでにしたいと思います。最後までお付き合いいただき、ありがとうございました。さようなら。

参照資料

本記事作成のため、下記の資料を参考にさせていただきました。

コメント