マイクに話しかけて自動翻訳するPythonプログラム

  • このエントリーをはてなブックマークに追加

Pythonを使えば、普段の会話を精度良く翻訳するアプリも簡単につくることができます。まずspeech_recognitionによる音声認識技術を使い、音声をテキストに変換、そして次にdeep_transtatorを使ってテキストを任意の言語に翻訳します。ここではこれらを駆使したPythonプログラムの例を紹介します。

こんにちは。wat(@watlablog)です。今回は音声認識と翻訳を組み合わせて自動翻訳機をつくってみます

音声自動翻訳アプリに必要なこと

最近英会話学習を再開しましたが、ふとPythonと連携して何か役立つツールを作ってみようと思い立ちました。

前回学んだ音声認識した結果を使って自動翻訳すればいちいち文章をテキストで入力しなくて済むぞ!

ということで、早速作り方を調査してみました。

マイクを使った音声認識

マイクに言葉を話しかけて音声をテキストに変換するPythonプログラムは、当WATLABでも既に試しています。

以下の記事ではSpeechRecognitionというライブラリの中でrecognize_google(Googleの音声認識モデル)を使って音声をテキストに変換するプログラムを紹介しています。

Python/SpeechRecognitionで音声認識してみた

テキスト翻訳

日本語のテキストを英語やその他の言語に翻訳、またはその逆を行うにあたりdeep_translatorというライブラリが一番お手軽のようです。

deep_translatorはインターネットで使用できる翻訳サービスをまとめたライブラリです。多くはAPIを使うためのキーを要求されますが、有名なGoogleTlanslatorGoogle翻訳)を使う場合キーやトークンは必要ありません。

公式ドキュメントとPyPIのページを参考にリンクします。
https://deep-translator.readthedocs.io/en/latest/index.html
https://pypi.org/project/deep-translator/

ライブラリはpip install deep-translatorでインストールします。
こちらが日本語のテキストを英訳するPythonコードです。

結果はこちら。合っているかな?

たった1行で翻訳が完了した!

それでは早速音声認識の機能を追加してつくってみましょう!

Pythonで音声の自動翻訳をするコード

動作環境

このページのプログラムは以下の環境で動作を確認しました。

Python Python 3.9.6
PyCharm (IDE) PyCharm CE 2020.1
SpeechRecognition 3.10.0
deep-translator 1.11.4

日本語を英語に翻訳するコード

1回だけ翻訳する場合

最初に日本語を英語に翻訳するプログラムを書きます。ほぼ「Python/SpeechRecognitionで音声認識してみた」で紹介した音声認識のコードを流用しているので、説明は不要だと思います。

1点、「r.adjust_for_ambient_noise(source, duration=1.5)」の部分が新しく追加されています。うるさい環境にいる場合等に音声が正しく認識されないことがありますが、adjust_for_ambient_noiseを使えば大まかにノイズと信号を分離して認識しやすくしてくれます。durationを長くすればノイズ認識精度も上がりますが、その分待機時間も増えます。

こちらが実行結果の例です。音声は「音読さん」に読んでもらいました。翻訳された英語も合っているようです。

繰り返し翻訳する場合

先ほどのプログラムは一回翻訳したら終了してしまいましたが、できれば繰り返し翻訳してほしいものです。以下のコードはwhileループを追加して繰り返し翻訳するようにしてみたコードです。「終わりです」と言うまで翻訳を繰り返してくれます。

こちらも動画で実行結果を示します。こんなに簡単にツール化できるのはさすがPython!

英語を日本語に翻訳するコード

英語から日本語に変換するには、以下の赤くハイライトした部分を主に修正します。言語設定を変更したという意味になります。
・text = r.recognize_google(audio, language="en")
・translated = GoogleTranslator(source='auto', target='ja').translate(text)

こちらが結果です。ちょっと取りこぼしもありました。英語は苦手?スピーカーの問題かな?

まとめ

この記事ではSpeechRecognitionとdeep-translatorを使ってマイクに話しかけた言葉を自動翻訳するプログラムを書いてみました。

deep-translatorのGoogleTranslatorを使うことで、気軽にPythonでGoogle翻訳を使えることがわかりました。記事の中で日本語を英語、英語を日本語に翻訳するコードを紹介しましたが、英語はちょっと音声認識の精度が悪いかもしれません(筆者のPC環境だけかもしれませんが)。

プログラム的にテキストを自動翻訳できると、自然言語系のツール化の幅が広がりそうですね!
Xでも関連情報をつぶやいているので、wat(@watlablog)のフォローお待ちしています!

  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

コメントを残す

*