Голосовое управление с использованием Google Speech API


Предыдущая | Следующая

Сервис Google Speech создавался корпорацией Google для голосового поиска. Нужно что-нибудь найти в Интернете — говорим фразу, а Google ищет. Удобно для всякого рода мобильных гаджетов. Но поиск нас не интересует. Нас интересует технология. К счастью, почти для каждого своего сервиса Google предоставляет API, которое дает возможность использовать сервис в своих приложениях. А это как раз то, что нам нужно.

Прежде всего, необходимо установить пакеты sox и flac:

sudo apt-get install v4l-utils sox alsa-tools alsa-oss sudo flac

Сначала делаем запись голоса (произносим, например: "hello Google speech") с помощью программы arecord (использовался микрофон, встроенный в веб-камеру Logitech С270):

arecord -B —buffer-time=1000000 -f dat -r 16000 -d 4 -D plughw:1,0 send.wav где:

* -B --buffer-time=1000000— специальный буфер (он описан в --help, и если его 
не задействовать, то будет выдана ошибка, и Google не распознает речь); 
* -f dat— без этого параметра система делает запись 8 битов, а с этой — 16; 
* -r 16000— запись с частотой 16 кГц; 
* -d 4— длительность записи 4 секунды;
* -D plughw:1,0— наш микрофон; 
* send.wav— файл для записи. 

Далее конвертируем этот WAV-файл в формат FLAC (формат для Google Speech API, который позволяет сжимать аудио без потерь):

flac -f -s send.wav -o send.flac

Затем отправляем POST-запрос к сервису Google Speech API:

wget -q -U "Mozilla/5.0" —post-file send.flac —header "Content-Type: audio/ x-flac; rate=16000" -O - "http://www.google.com/ speech-api/v1/recognize?lang=en-us&client=chromium"

И получаем ответ (рис. 4.34) — сервис выдал фразу hello Google speech и очень высокую вероятность распознавания: 0,855.

Напишем теперь bash-скрипт, ожидающий запись с микрофона, отправляющий записанный файл на распознавание сервису Google Speech и записывающий результат в файл stt.txt.

Создаем файл скрипта stt.sh:

sudo touch stt.sh

Даем ему права на выполнение:

sudo chmod +x stt.sh

Записываем в него код, представленный в листинге 4.8.

Листинг 4.8. Скрипт stt.sh

export AUDIODEV="hw:0" echo "speaking ... "

arecord -B —buffer-time=1000000 -f dat -r 16000 -d 4 -D plughw:1,0 send.wav

echo "wav - flac"

flac -f -s send.wav -o send.flac

echo "Converting Speech to Text..."

wget -q -U "Mozilla/5.0" —post-file send.flac —header "Content-Type: audio/x­flac; rate=16000" -O - "http://www.google.com/speech-api/v1/recognize?lang=en- us&client=chromium" | cut -d\" -f12       > stt.txt

echo "You Said:" value='cat stt.txt' echo "$value"

Запускаем наш скрипт:

./stt.sh

И получаем результат (рис. 4.35).

Примечание

Коды всех листингов этого раздела, а также файлы send.wav и send.flac вы найдете в папке glava_04\google_speech сопровождающего книгу электронного архива (см. приложение).