Не совсем понял, зачем что-то записывать на sd. Запись начинается, когда пользователь готов говорить (т.е. что-нибудь нажимает на смартфоне), либо робот инициализирует начало записи по ВТ и запись идет, пока что-нибудь не распознается.
Разработчики позаботились, чтобы программить на андроиде смогла при желании любая домохозяйка. На
appinventor, например.
Я сначала пользовался
sl4a. Вот пример кода на питоне:
Код:
#_*_ coding: utf-8 _*_
import android
droid = android.Android()
SPP_ID='00001101-0000-1000-8000-00805F9B34FB' #SPP профиль
BT_DEVICE_ID = '11:11:11:11:11:11' #устройство, с которым будем соединяться
cmd=""
#зададим словарь команд
comands={
u"таймер":"TIM",
u"прошло":"TPA",
u"осталось":"TFA",
u"напомни":"NAP",
u"радио":"RAD",
u"погода":"WEA",
u"температура":"TEM",
u"градусов":"TEM",
u"тише":"VOL",
u"громче":"VOH",
u"молчи":"MUT",
u"говори":"MUN",
u"громкость":"VOZ",
u"звук":"VOZ",
u"время":"HOR",
u"времени":"HOR",
u"новости":"NEW",
u"вперед":"NEX",
u"следующий":"NEX",
u"следующую":"NEX",
u"назад":"BVD",
u"играй":"PLY",
u"стоп":"STP",
u"пауза":"PAU",
u"музыка":"MUZ",
u"музыку":"MUZ",
u"стой":"STO",
u"будильник":"ALA",
u"курс":"USD"
}
#зададим словарь параметров
parameters={
u"выключи":"off",
u"отключи":"off",
u"включи":"on",
u"эхо":"1",
u"вести":"0",
u"маяк":"3",
u"джаз":"4",
u"латино":"5",
u"латина":"5",
u"класика":"6",
u"моцарт":"6",
u"романтическое":"radioromantika"
}
#зададим словарь чисел
digits={
u"один":"1",
u"одна":"1",
u"одну":"1",
u"три":"3",
u"пять":"5",
u"десять":"10",
u"пятнадцать":"15",
u"двадцать":"20",
u"тридцать":"30"
}
droid.vibrate()
#примем голосовую команду
results = droid.recognizeSpeech(u"говори",None,None)
instring=results.result
droid.makeToast(instring)
#включим bt
droid.toggleBluetoothState(True)
droid.bluetoothConnect(SPP_ID, BT_DEVICE_ID)
#преобразуем исходную строку в список входящих в нее слов
string=instring.split(" ")
for x in string: #проверим совпадение с командой для каждого слова
if x in comands:
cmd+=comands[x]
break
if cmd:
if (cmd=="TIM" or cmd=="NAP" or cmd=="VOZ" or cmd=="ALA"):
for x in string:
try:
i=int(x) #проверка, является ли числом
cmd+=x #если удалось преобразовать в число, добавляем к команде
except Exception:
pass
if x in digits: #если числа распознались словами
cmd+=digits[x]
# break
elif cmd=="RAD":
for x in string: #проверим совпадение с параметром для каждого слова
if x in parameters:
cmd+=parameters[x]
break
else:
pass
else: cmd='NONE'
droid.makeToast(cmd)
cmd='*'+cmd+'!'
#отправим обработанный результат
droid.bluetoothWrite(cmd)
Т.е. программа запускается один раз, распознает сказанное, расшифровывает команду и передает ее роботу по ВТ.
Расшифровкой можно было заняться и на стороне робота, но на питоне это сделать проще, чем на VB6.
Хотелось бы больше подробностей про робота: структурную схему, характеристики железа, что он будет делать руками...
Добавлено спустя 3 часа 29 минут 40 секунд:saifer писал(а):
Для распознавания я переработал под себя проект с исходным кодом
Было бы интересно посмотреть ваш вариант, если он не явлется комерческой тайной. Разбираться в исходниках на Delphi как-то не охота. И ообще было бы супер, сделать для этой цели готовую библиотеку для общего потребления (на входе - комманда начала записи, на выходе - распознанный гуглом результат). Я так в сети ничего такого не нашел.