Скрипт распознавания речи не работает

У меня есть этот скрипт распознавания речи, который записывает аудиовход и отправляет на серверы распознавания речи Google, получает результаты и показывает их на терминале Ubuntu. Но у меня не получается. Я предполагаю, что Google внес изменения или что-то в этом роде, поэтому он больше не работает. Мне нужен этот скрипт для проекта голосового веб-браузера. Вот сценарий:

#!/bin/bash



results=6

if [ "$1" == "-r" ];then
    results="$2"
fi


echo "Recording... Please press ^C a few seconds after finishing."
rec -r 16000 -b 16 -c 1 test.wav > /dev/null 2>&1
echo
echo "Recording finished!"
sox test.wav test.flac gain -n -5 silence 1 5 2% > /dev/null 2>&1
echo "Now uploading to google's speech recognition servers."
echo
echo "This may take a bit..."
a=$(curl \
  --data-binary @test.flac \
  --header 'Content-type: audio/x-flac; rate=16000' \
  'https://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&pfilter=2&lang=en-US&maxresults='$results'' 2>/dev/null)
#echo "Done! Parsing results..."
echo
b=$(echo "$a" |egrep -o "\"confidence\":[^}]*" |sed 's/"confidence"://')
c=$(qalc $b \* 100 | egrep -o "=.*" |sed 's/= //' |sed 's/\.\([0-9]\)*/\.\1/')

echo "Done, results below :)"
echo
echo "Confidence in results = ${c}%"
echo "$a" | egrep -o "\"utterance\":\"[^\"]*\"" |sed 's/"utterance":"//;s/"//'|nl

Вот пример неполного вывода:

john@ubuntu:~/Desktop$ ./test.bash
Recording... Please press ^C a few seconds after finishing.
^C
Recording finished!
Now uploading to google's speech recognition servers.

This may take a bit...

После этого ничего не показывает. Чтобы увидеть, как работает этот скрипт, перейдите по этой ссылке: ССЫЛКА

Пожалуйста, помогите мне найти ошибку. Информация: Я использую Ubuntu12.04 в VMware WS.


person Community    schedule 05.01.2013    source источник
comment
какова ценность $a, которую вы получаете?   -  person Mukund K Roy    schedule 05.01.2013
comment
Результаты. Удалось ли вам успешно запустить сценарий?   -  person    schedule 05.01.2013
comment
Я получаю сообщение об ошибке 500 Внутренняя ошибка сервера   -  person Mukund K Roy    schedule 05.01.2013
comment
И я запустил скрипт в rhel6. «qalc» заменено на «bc»   -  person Mukund K Roy    schedule 05.01.2013
comment
Итак, каково решение? Я не вижу способа отправить личное сообщение в stackoverflow. Итак, если у вас есть профиль в какой-либо социальной сети, дайте ссылку в комментарии. Мы не получим никакого решения на такой скорости. Нам нужно обсудить больше. Если мы, наконец, получим решение, я опубликую его здесь.   -  person    schedule 05.01.2013
comment
Хорошо, сначала давайте обсудим, какое значение возвращает Google API. Я получаю сообщение об ошибке 500 Internal Server Error. echo $a и скажи мне.   -  person Mukund K Roy    schedule 06.01.2013


Ответы (2)


Проблема может заключаться в том, что ваши аудиофайлы слишком длинные. Я считаю, что API Google ограничен файлами длиной менее 3 секунд.

person Chuck Wooters    schedule 07.01.2013
comment
3 секунды может быть слишком мало. Я попытался загрузить несколько 10-секундных аудиофайлов. Некоторые можно узнать. Однако в Google нет ни одного документа, в котором говорилось бы об ограничении продолжительности звука. - person Leo5188; 16.05.2013

Пожалуйста, попробуйте разделить ваш bash-скрипт на две части для целей отладки. Вам лучше подготовить действительный аудиофайл FLAC (выборка с частотой 16 000 Гц) и отправить его в Google, чтобы убедиться, что ваша основная часть работает. Если в вашем плане используется только Google ASR, вы можете напрямую использовать это решение Python 3.0.

person Leo5188    schedule 16.05.2013