よちよちpython

独習 python/Qpython/Pydroid3/termux

QPythonで音声コマンドもどきを作るテスト

今回はQPythonで、なんちゃってボイスコマンドを作ってみます。

GoogleアシスタントやSiriに 「OK Google 最寄りのガソリンスタンドを探して」
「Hey Siri 今日の天気予報は?」
と音声で質問や命令をすると、それに応えてくれます。
様々な言葉の言い回しに対応する柔軟性がありますが、いまから作るのはそんなに賢くありません。

・「マップの検索」「Googleでキーワード検索」かの二種類のみの対応です。


・音声入力内容は以下のように固定。
「マップ検索東京駅」
Google検索ボイスコマンドの仕組み」

「検索」の所で前後に区切って、「マップ」か「Google検索」かと、それ以降の「検索内容」を取り出し、それに応じて場合分け。


・方法

QPythonのandroidhelperを使って音声認識

→音声入力を一旦テキストファイルに書き出す(実行すると音声認識結果.txtというファイルが作成されます)

→そのテキストから「検索」の文字をfind関数で探す

→find関数は検索文字のindexを返します。その前後をスライスで「手段」と「検索内容」で切り分け

→ifで分岐。URLを振り分け、ブラウザ起動で表示

音声入力が起動します。 f:id:chayarokurokuro:20190625201205j:plain

マップが表示された。 f:id:chayarokurokuro:20190625201203j:plain


以下、Pythonスクリプト

import androidhelper

Droid = androidhelper.Android() 
voice = Droid.recognizeSpeech()

voice_file = "音声認識結果.txt"

with open(voice_file,"w") as f:
    f.write(voice[1] + "\n")

with open(voice_file,"r") as f:
    r = f.read()
    
    command_separate_index = r.find("検索")
    
    syudan_text = r[:command_separate_index]
    mokuteki_text = r[command_separate_index+2:]
    
    if syudan_text == "マップ":
        Droid.view("https://www.google.com/maps/search/" + mokuteki_text)
        
        
    
    elif syudan_text == "Google ":
        Droid.view("https://www.google.com/search?q=" + mokuteki_text)