Часть 1
Написать программу, которая все делает сама я не смогу еще долго. А может не смогу и вообще. Это совершенно не мой профиль и никак не пригодится по работе. Но можно прикрутить сторонние утилиты и управлять ими. Все они будут лежать в архиве с программой.
Рекомендую протестить каждый шаг по отдельности. Чтобы получить хорошее распознавание нужно хотя бы самому послушать, что мы в Гугл отправляем, и на сколько разборчиво звучит голос в записи.
1. Записать файл до тишины.
Тут поможет sox. Штука эта очень мудрая, и содержит уйму аргументов. Вот пример вызова, чтобы записать звуковой файл current.wav от первой тишины и до второй.
sox -d -c 2 -r 44100 -b 16 current.wav silence -l 1 0.1 0.1% 1 2.0 0.1%
Все параметры подбираются индивидуально. Первая группа 1 0.1 0.1% это характеристики первой тишины после которой начнется запись. Вторая группа 1 2.0 0.1% характеристики второй тишины после которой запись завершится. Параметр -l означает, что в файл нужно писать и тишину паузы в конце. Но я не нашел такого параметра для тишины вначале, и поэтому часто самое начало не пишется. И например вместо слова "Скажи" получается "Кажи", или вообще первое короткое негромкое слово теряется. Пришлось отказаться от тишины вначале и писать все сразу до тишины в конце. Вот как это выглядит:
sox -d -c 2 -r 44100 -b 16 current.wav silence -l 0 1 2.0 0.1%
В первой группе 0 и больше ничего. Это означает, что пишем сразу. После этого sox завершит свою работу и передаст управление дальше. Вот хороший сайт с описанием
http://sox.sourceforge.net/sox.html
2. Удалить шум.
Тут тоже поможет sox. Но я пока что это не изучал. Примеры в Интернете есть. Суть в том, чтобы для фильтра использовать файл с шумом именно вашей системы. Может быть кто нибудь работал с sox и сможет помочь примерами.
3. Переконвертировать в требуемый формат.
Гугл хочет получить файл именно во flac формате. wav не годится. Нужно либо сразу писать со flac, либо переконвертировать. Опять же может помочь sox, и я находил примеры. Но нужна версия с такими возможностями. Я чего то не нашел... Кроме sox переконвертировать может и сам flac например вот так:
flac -f current.wav
После этого будет создан файл current.flac и утилита вернет управление чтобы продолжить дальше.
4. Гугл
Моя программа написана на VB6. Это конечно очень старый язык, но по своей работе, я неплохо знаю VBA, а VB6 это почти тоже самое. Для общения с Гуглом используется curl. Я ранее не сталкивался с ним, но у меня получилось причесать похожий пример и заставить его работать. Но я пока что не переиначил его на VB6 и поэтому из своей программы просто обращаюсь к файлу voice_recognition.php Вообще конечно можно было весь код засунуть в voice_recognition.php, да и вообще даже в методы МД. Не делать это я не хочу. Как уже писал, при работе, циклы будут вешаться.
Ранее Гугл всем и просто так разрешал пользоваться своим сервисом распознавания голоса. Но потом ему похоже это поднадоело. И они решили закрыть эту публичную вечеринку, но пускать туда всех желающих. Чтобы иметь возможность пользоваться их сервисом, нужно стать разработчиком Гугла и получить уникальный код. Только при его наличии сервис будет общаться. Причем каждому коду дали только по 50 обращений в сутки. Но тут опять странность. Если обращений будет больше 50, то все равно сервер продолжает отвечать. Более того, народ писал, что и 500 работает. Вообщем даже бутылки водки не хватит чтобы столько за день наговорить )) Кроме того, в Интернете можно выловить еще действующие коды. Несколько их я записал в файле, чтобы сразу не тратить время на регистрацию. А вообще можно без труда получить код на свой акк в гугле или даже создать новый, а можно и сразу 2, если ограничение в 50 все же вступит в силу.