В продолжение предыдущей темы я продолжаю изучать возможности Scripting Layer For Android (SL4A) и языка программирования Python для телефона.
Сейчас научился делать запросы к Google на распознавание речи. Смотрите, что получается:
Плата Марсоход подключена к телефону с ОС Android через аудио разъем.
На телефоне запускаю мой скрипт на Python. Вот такой:
import android
droid = android.Android()
def my_dialog():
str = droid.recognizeSpeech("Say CMD",None,None).result
return str
def play( id ):
if (id==u'1'):
droid.mediaPlay('/mnt/sdcard/media/audio/s1000.wav')
elif (id==u'2'):
droid.mediaPlay('/mnt/sdcard/media/audio/s1200.wav')
elif (id==u'3'):
droid.mediaPlay('/mnt/sdcard/media/audio/s1400.wav')
elif (id==u'4'):
droid.mediaPlay('/mnt/sdcard/media/audio/s1600.wav')
cmd=u'1'
while cmd != u'5':
cmd = my_dialog()
play(cmd)
print "Thanks Marsohod!"
Скрипт ждет голосовой команды с встроенного микрофона телефона потом отправляет ее в Google через WiFi (у меня есть своя точка доступа) ну или через GPRS/3G.
Результат запроса - это текстовая строка. Я подаю и ожидаю голосовые команды "один", "два", "три" или "четыре". Google возвращает "1", "2", "3" и "4" соответственно.
Полученная строка сравнивается с эталонами и в зависимости от того, какая команда получена играется аудио файл со специальным тоном. Поскольку в аудио разъем телефона подключен штекер, то звук идет не на динамики телефона, а к подключенной "гарнитуре", то есть к плате Марсоход.
Плата Марсоход определяет частоту тона и зажигает соответствующий светодиод.
Вот как это работает (только смотрите видео со звуком):
Подробнее...