音声の入出力(音声認識と音声合成)をPythonを使ってMacで行うことが必要になりました。とりあえずMacに日本語で話しかけると、その音声を認識してテキストデータに変換し、そのテキストデータを音声合成により音声で返してくれる、つまり”オウム返し”をしてくれるコードを作ってみました。
思いの外、簡単にできたのですが、記事としては長くなってしまったので、本記事では音声認識の部分のみを説明します。みなさんと情報の共有できれば良いなと思っています。
この記事を読んで、できるようになる事
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の後継機です。
音声認識
概要説明
ここでは、SpeechRecognitionというPythonのライブラリを使い、音声認識を行います。このライブラリはAPI(Application Programming Interface)を基本的にオンラインで使い、音声認識を行うものです。
いくつかのAPIから選択(詳細は後述)できますが、ここではdefaultの"Google Web Speech API"を使用します。このAPIは唯一、登録無しつまり、無料で使えるAPIです。(2020年6月時点)また、音声認識を行うには、インターネットに接続している環境が必要です。
またこれは、使用時間が1時間を超えると有料になるGoogle Cloud Speechとは異なるAPIです。
この記事を書くにあたって、インターネットでライブラリであるSpeechRecognitionと音声認識のためのAPIとの関係を調べたのですが、日本語の資料では、残念ながらきちんと説明しているものを見つけることができませんでした。
最終的に英文の資料をもとにその関係を理解しました。以下に参照した英文の資料のリンクとこの記事にたどり着いた皆さんが知りたいであろう項目をザクっと和訳したものを置いておきます。このことを理解しなくてもこの記事の内容は理解していただけると思いますが、興味のある方は、目を通してみてください。
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”を使います。
1 2 3 4 |
# SpeechRecognitionのinstall !pip install speechrecognition # pyaudioのinstall !pip install Pyaudio |
上記のコードによって、JupyterLabからライブラリのインストールができます。ターミナルから行う場合は、pipの前にある"!"を省略してください。
念の為、2つのライブラリが間違いなくインストールされたか、確認しておきましょう。
(Pythonの3.7 以上にPyaudioをインストールするとエラーが出るようです。無理やりインストールする方法はあるようですが、可能であれば、3.6にバージョンを落とすことをお勧めします。)
1 2 |
# installの確認 !pip list |
上記のコードを実行させると、すでにインストールされているライブラリの一覧が表示されます。2つのライブラリがちゃんとストールされているか確認しましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
import speech_recognition as sr import subprocess import tempfile # 音声入力 while True: r = sr.Recognizer() with sr.Microphone() as source: print("何かお話しして下さい。") audio = r.listen(source) try: # Google Web Speech APIで音声認識 text = r.recognize_google(audio, language="ja-JP") except sr.UnknownValueError: print("Google Web Speech APIは音声を認識できませんでした。") except sr.RequestError as e: print("GoogleWeb Speech APIに音声認識を要求できませんでした;" " {0}".format(e)) else: print(text) if text == "終わりだよ": break print("完了。") |
それでは、上記のコードをJupyterLabから入力して、実行してみましょう。
何かお話ししてください。と催促してくるので、内蔵マイクの近く(ぼくのMacbook Proだと左側スピーカーの近く)で何か日本語を話しかけてください。かなりの精度で日本語を認識してくれます。
ループで催促を続けてくるので、止める時は”終わりだよ”と教えてあげて下さい。
ちなみに15行の"ja-JP"を"en-US"に変更すると、英語として音声認識を行ってくれます。英語の発音に自信のある方は、試してみて下さい。また、その際、23行の"終わりだよ"は何か適当な英語のフレーズに変更して下さいね。
まとめ
オンラインでAPIの助けを借りているとは言え、こんな簡単だコードでこれだけの精度の音声認識を実装できることは驚きに値すると思います。みなさんはどう思われましたか。
次の記事では、テキストデータを音声合成を行なってMacに音声として返してもらう実装を説明していきたいと思います。
それでは、今回はここまでにしたいと思います。最後までお付き合いいただき、ありがとうございました。さようなら。
参照資料
本記事作成のため、下記の資料を参考にさせていただきました。
- https://tam5917.hatenablog.com/entry/2019/04/27/141502
- https://realpython.com/python-speech-recognition/
- https://pypi.org/project/SpeechRecognition/
おすすめプログラミングスクール
テックキャンプ エンジニア転職
ビジネス系YouTuberとして著名なマコなり社長が社長を務める株式会社Divが運営するTECH CAMP。
やり切れる教材と就職までのサポートが大きな強めです。
また、受講の際には各自Macを準備する必要があります。(有料でレンタルあり)就職できなければ授業料返還の保証がありますが、39才以下との条件があります。ご注意ください。
費用は短期集中で一括払いで総額税抜648,000円、夜間・休日で848,000円と安くない費用になります。
コロナの影響で閉鎖していた教室もマスク着用などの条件付きで、全室、2020年11月2日より使用可能になりました。
眺めていても何も始まりません。これを機に、まずは以下のリンクから無料カウンセリングを受けられてみてはいかがでしょうか。
■教育について ・圧倒的コミット量と網羅性 テックキャンプ エンジニア転職は600時間をかけてフロント/サーバーサイド/インフラ全てを一通り学びます。
■サポート体制について ・学習環境 オンライン問わずメンターに質問し放題なため、途中で諦めてしまうことがありません。 ・専属のトレーナーの存在 トレーナーは毎週の学習計画の作成、日々の進捗確認、 キャリアアドバイザーへのフィードバックなど期間中は二人三脚となってサポートします。 ・専属のキャリアアドバイザー 毎週のキャリア面談、面接対策や履歴書の添削、企業提案など転職が決定するまでサポートし続けます。 また、企業に入社した後も半年間であれば無料でキャリア相談を受け付けています。
受講スタイル:通学またはオンライン
場所:東京(渋谷)、大阪、名古屋、福岡
価格:
入会金不要で月々21,200円(税込)から、一括は648,000円(税抜)(短期集中)
主な学習言語:HTML/CSS、JavaScriptRuby on Rails等
期間:短期集中で10週間、夜間・休日で6ヶ月
コメント