うちIoT

Telegram botに翻訳と読み上げを頼む

はじめに

Telegram botを使った記事を一つ前に書きました。完成間際にGoogle translateと組み合わせてみるというアイデアが家族から出て、早速やってみました。今回はGoogle translateをpythonから扱う部分も含めて説明してみようと思います。

なにをするためのもの?

Telegramのチャットグループに以下の形式でメッセージを送ると、botが翻訳して返事をくれるというものです。

/tr <language code> <sentence(s) to be translated>

“/tr”のあと(translateの略。携帯から打つには短いほうが便利)、翻訳先の言語コード(Google translateで使われているもの。下のテーブル参照)と翻訳してほしい文章を半角スペースで区切って書くだけ。下のキャプチャを見てください。

言語コード
Japaneseja
Englishen
Chinese (Simplified)zh or zh-CN
Spanishes
Koreanko
Malayms
Tamilta
Russianru
Googleの言語コード。もっとあります。ここ参照。

実際のキャプチャを見たほうがわかりやすいですね。

また、”/tr”の部分を”/trr” (translate + read out)とすると、Google homeに読み上げ文を送ってくれるようにもしました。

なんだ、Google translateとかわらないじゃん。

そうですね。なんせ、裏で動いているのはGoogle translateですから。便利なのは、履歴がチャットに残ってあとから見直せるところです。あと、botになったペットから返事がくるというなんとも言えない”感じ”がたまりません。

pythonでGoogle translate

Google translateはGoogleが提供するサービスで、普通の使い方なら無料で利用できます。

本家のAPIはここにあるように、決められたURLへ以下の形のjsonデータを送ると、翻訳された文を含むjsonデータが返されるというものです。

{
  "q": ["Hello world", "My name is Jeff"],
  "target": "de"
}

さて、AIPの部分は汎用のhttpリクエストとjsonでのデータのやりとりなので、pythonにある普通のライブラリ(requestsとjson)だけで書いてもいいのですが、きっと誰かが便利に使えるwrapperを用意してくれているはずです。調べてみると、SuHan Hanさんのpy-googletransがよさそうだったので、これを使うことにしました。

installはpipで一発です。python3とpython2とが混在している環境を使っている場合には、pip3があるはずなので、そちらで。

説明図の字がちょっと小さくなってしまいますが、まずは与えた文の言語判定をさせてみます。

ひらがな文はもちろん日本語として判定されます。漢字だけのことばをいれてみたところ、”参勤交代”は日本語判定で自信度がちょっとだけ低くて96.8%。日本語にしかないことばなのかもしれませんけど、もしかして、っという部分がマイナスされているのかも。そこで、日本では見かけない漢字だけの語句、”垂頭喪気”でためしてみると、自信100%の中国語判定。文字だけでなく、明らかに語句を見ている感じがしますね。

つぎ。翻訳させるにはこうします。

これだけでほぼ十分だと思いますが、documentationもよく整備されていますので、さらに興味のある方は参照してみてください。

このあとの予定

このアイデア自体、前の記事の”このあとの予定”だったので、これ以上ありません、いまのところ。満足しています。

ABOUT ME
misson
ものづくりが趣味。頭の中でモヤモヤと渦巻くガスを形として沈殿させるのが趣味。座右の銘その2は:未来は今の積分値


follow us in feedly

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です