есть настроеный комплекс по распознованию речи (с начитаным словарём и морфемы для русского языка)
Есть скрипты выполнения действий относительно поступающих после распознования голосовых команд.
Настроен синтезатор речи.
Написанны скрипты для мониторинга сервера по SMS использующий модифицированный 3G модема ZTE MF180S
Нужно научить сервер общатся по средствам голосовых команд!
Изыскания в этой области:
В системе модем представлен устроиствами:
/dev/ttyUSB0 — неизвестно назначение
/dev/ttyUSB1 — управляющий порт
/dev/ttyUSB2 — порт для отправки АТ команд
При звонке на номер в /dev/ttyUSB1 сыпятся команды:
RING
+CLIP: "+99897XXXXXXX",145,,,,0
скрипт отлавливает данную команду, парсит строку сверяя номер входящего звонка с номерами в БД и в зависимости от этого отсылает команду на поднятие трубки (ATA) или на завершение соединения!!!
а вот теперь самое интересное после того как модем снял трубку нужно передать голосовой фаил в формате WAV 8bit / 8000Гц
пытались писать в порт (и какой порт для этого использовать?) потоком и блоками по 320байт в итоге тишина в трубки!
может при инициализации звонка для передачи голоса нужно использовать ещё какие то АТ команды???
UPD. С Астериском знаком, прошу не предлагать его, как решение.
Всем кто поможет обещаю плюс в Карму, проблема очень важная.
Нашими умельцами все же была решена данная задача!!!
На новом свистке фирмы Huawei, после поднятия трубки командой ATA
Пишется в управляющий порт команда AT^DDSETEX=2
после этого в интерфейсный порт пишется звук PCM 8000Гц 16bit Mono блоками по 320 байт каждые 20 миллисекунд если пишется в порт из файла то позиционировать указатель в файле надо со смещением 44 байта (это заголовок WAV файла)
(Проблема была решена благодаря снифферу COM порта, и жуткому желанию решить проблему своим методом)
Судя по форумам в интернете, вроде бы у модемов ZTE голос передается через отдельный USB-порт (/dev/ttyUSB0?), на который нужны драйвера, и причем для разблокировки этой функции надо его перепрошивать.
погуглите внимательно про asterisk и chan_datacard или chan_dongle
там есть практически все что вам нужно, и прием звонка и «проговоривание» wav файлов и т.д. и т.п.
разбираетесь в матчасти про голосвые функции — у вас вероятно прошивка с залоченым только под windows голосом. прийдётся перепрошивать.
про asterisk читаете что найдете на хабре — тут была пара очень толковых статей. (и гугл никто не отменял, обратите внимание на статью "… частный опыт настройки… с нуля")
просматриваете начало книги «Asterisk — искусство телефонии» — для понимания диалплана.
пишете ne часть диалплана которая вам нужна и которая делает то что вам нужно.
это позволит вам не мучаться с изобретением велосипеда.
ах да, я думаю вашу систему распознавания голоса к * тоже можно будет прикрутить.
С помощью астериска я бы уже давно реализовал, в том то вся и сложность заключается, мы же не покупаем смартфон на андроиде, для того, чтобы просто смски посылать. Так и мы здесь в этом решение не хотим загромождать и без того загруженную систему.
если честно я думаю вы больше времени потратите в вашем случае… я не думаю что можно просто командами перевести порт в режим слушаю RAW PCM и гнать туда ваш wav файл. тогда пойдите другим путем. посмотрите исходники chan_datacard/dongle — они на С вроде — может быть вам повезет найти код для проигрывания туда аудио потока максимально простой и понятный для вас.
но если честно то я удивляюсь — пустой * с chan_datacard весит «обмаль» да и ресурсов ест совсем не много.
посмотрите ещё на freewswitch или аналоги.
или ещё хорошая идея — ищите dasboard под *nix — может там будет что-то что может снять трубку и проиграть туда ваш wav.
кстати говоря, если по вашему получиться — скажите (лучше в ПМ) можно без описания как, но сам факт зафиксировать. ну и если перейдете на * для этого — то тем более скажите:)