Comments 47
Позже это планируется сделать опенсурс проектом? Что-бы каждый человек при должно умение и хорошей документации смог сделать это сам?
Он изначально позиционируется как Open Source. Ссылка на trac есть в статье.
Залогинился в opensvn.ru по openid.
Выставил пароль для trac.
Прошёл по вашей ссылке для trac с выставленным логином.
Теперь везде ошибка:
Error: Forbidden
TIMELINE_VIEW privileges are required to perform this operation

По ссылке на вики:
Error: Forbidden
WIKI_VIEW privileges are required to perform this operation on TracGuide

По trac.opensvn.ru/ion/ тоже самое.

?
спасибо.

я уже потестировал его с помощью:
#!/bin/bash
# installation:
# sudo apt-get install sox curl perl
# sudo sh -c "curl -s -L cpanmin.us | perl - JSON::XS"
while [ true ]; do
echo "recording..."
rec -q -c 1 -r 16000 current.wav silence 1 0.3 2% 1 0.3 2%
if [ -z current.wav ]; then
echo "nothing was recorded (check mic setting, silence level)"
continue
fi
echo "recognizing..."
sox current.wav current.flac
text=`curl -s -H 'Content-Type: audio/x-flac; rate=16000' --data-binary '@current.flac' 'https://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=ru-RU'| perl -MJSON::XS -CO -nE'say decode_json($_)->{hypotheses}->[0]->{utterance}'`
echo "recognized text: '$text'"
# wrapper around festival for Russian language
# festival installation/configuration is needed for this
#saytext-ru.sh "$text"
done


После настройки микрофона показывал сносные результаты. Но и ошибок было достаточно.
Относительно синтеза звука правильно подсказывают внизу: festival
И в приведённой вами в прошлый раз ссылке: ab-log.ru/smart-house/speech/voice-synthesis
он тоже есть.
Впрочем как и распознавание:
ab-log.ru/smart-house/speech/speech-recognition
> Если мы запустим несколько (предположим, 5) копий скрипта с интервалом в 1 секунду, получим непрерывное распознавание голоса.

То есть система непрерывно шлёт на сервер Гугла аудио для распознавания, да еще в несколько потоков. Какой при этом трафик генерируется?
Для ADSL-щиков это может оказаться критично, у них исходящий канал — больное место :)
Да и не только исходящий канал. Задержки могут сыграть тоже весьма важную роль. Если реакция на команды будет с ощутимой задержкой — это будет раздражать.
Ну у кого-то с глубинки нет такой скорости. Правда с моими 2 мбитами тоже можно разгулятся, но у нас я чуть ли не буржуй с такой скоростью.
А Гугл не ограничивает кол-во запросов к API? Все-таки постоянно отправлять аудио нa распознавание, имхо, не лучшая идея.
У меня проходят без проблем все запросы на распознавание. А по поводу, как распознавать — предлагайте, если будет хорошая идея, почему бы и не реализовать :)
Вот еще какая идея родилась… Каждая команда начинается с ключевого слова, обозначающего, что вы обращаетесь именно к системе. Можно распознавать это ключевое слово локально, и только если оно обнаружено, слать последующие 5 секунд (саму команду) в гугл. Плюсы очевидны:
1) не пересылаем аудиопоток вхолостую, не забиваем канал
2) настроить движок на распознавание одного слова, имхо, легче, чем научить отличать одну команду от другой.
В сериале StarTrek персонажи обращаются к компьютеру ключевой фразой «компьютер»
Например:
-Компьютер, где находится Тувок?
-Тувок находится у себя в каюте.

Причем, я бы не отказался от тех писков, которые выдает компьютер (после обращения «компьютер» раздается серия звуков, подтверждающая готовность к приему команды)
Есть идея реализовать такую схему:

1. Ключевое слово, после которого включается прием команды (например, «компьютер»)
2. ПК подтверждает пререход к готовности принимать команды (например говорит: «слушаю»)
3. Запись 5-10 секундного файла, который уже и отправляется гуглу.

Комментирующие советуют отлавливать ключевое слово средствами не гугла. Порывшись в сети, ничего лучше CMU sphinx не нашел… Но с настройкой его вышел затык. Информации крайне мало и она скудна. Может кто подскажет, как вообще прикрутить к нему русский язык и заставить слушать микрофон?
Вместо писка можно вибрацию лёгкую пускать. Таким образом не пугая людей или детей.
Вот. Вероятно, это не единственное. И всяко лучше, чем доверять всё, что происходит в вашем доме большому брату-поисковику.
А чет так слабо — шлете все, что происходит в вашем доме только в Google? Шлите сразу путену, милиции, ну и в организацию воров-домушников. Это ж верх патриотизма — гражданин не только не против, чтоб его прослушивали, он сам устанавливает у себя жучки и выдает наружу.
У вас параноя. Никому не интересно, как вы разговариваете с женой и собакой.
Гугл, вроде, переводит translate-API на платные рельсы. Не отвалится ли озвучивание текста после этого?
Все-таки решение с гуглом не очень. Передача команды по сети, ожидание обработки и результата — это не очень хорошее решение. Нет, скажем, движка, который можно было бы обучить командам со своего голоса? Ведь гугл — вещь универсальная, а команды распознавать система должна только от определенного круга пользователей.
Посматриваю в сторону CMU Sphinx. Но по отзывам, там с распознаванием все не так гладко.
Обучить его нельзя? Пользователь говорит команду, он разбирает ее по своему алгоритму и я присваиваю результату разборки свой текст, если есть отклонения (к примеру).
Так используйте его как запасной вариант. Есть интернет — распознает через гугль, нет интернета — все равно распознает, через сфинкс, пусть и хуже.
Давно на хабре не был, а тут зашел и будущее.
Также критичен по поводу выбора гугла и многих скриптов, многим нужно какое-то решение под ключ без знаний шелскриптинга и интернета. Но как вариант с микробюджетом то!
Идейка с распознанием голоса хорошая. Но нужно учесть, что человек может слушать громкую музыку, и в словах, к примеру, песен могут быть команды + человека может быть не слышно. По этому, как совет, добавьте еще и обработку голоса. Такое добавление поможет решить некоторые проблемы, к примеру с интернетом.
меня все мучает вопрос и ситуацией когда нет инета:
сколько не говори тогда «Дом, включи свет» — ничего же и не дождешься.
Вариант как предложил Ocelot вообще предусмотрен?

Что-то я не доверяю такому управлению.
У меня тут, недавно, без всякого лишнего управления микроволновка играла в «восстание роботов» и сама включалась — хорошо что еще уснуть не успел.
Спасибо за статью. Вот бы еще код на Java/C# бы. С перлом не работал никогда. Код тяжело воспринимается.
Вспоминается из Шумилова отрывок…
— А почему Дик всё время туда-сюда очки дёргает?
— А он их надевает, когда голосовые команды отдаёт. А то скажет он тебе «Отвяжись!», а комп примет на свой счёт. И что-нибудь отвяжет. Будет обидно.
Как-то так =)
Собственно, всё это весьма прикольно. Но — постоянно слать куски аудио в корпорацию добра? Во-первых, куски — попадание текста на разрыв уже заставит повторить команду. Во-вторых, такой объём траффика… И в-третьих, слить полностью аудио-запись своей жизни в гугль — весьма смелое решение =)
Имхо, лучше всё-таки делать запись только при опредлённых условиях. Лучше всего реагировать при этом не на голос, а на какой-нить редкий звук — хлопок, свист… Для эстетов можно носить с собой колокольчик и настроить программу реагировать на издаваемый им звон =) Хлопок, теоретически, даже можно использовать как триггер для записи по уровню звука.
Проблемы не будет. Вы же знаете, что Гугл закрывает translate API? Все потому, что это «Корпорация добра», а не халявы.

А от статьи двоякое ощущение — техническая сторона хороша для перл-кодера, например, иногда похвастаться голосовым управлением сервером (перед начальством) полезно.

Но вот отношение к доступным ресурсам, в частности, того же Гугла — как у пацанов, включающих громкий БУМЦ_БУМЦ ночью во дворе — мне хорошо, а на остальных — … (сами догадываетесь)
А представьте, что приедут братки, у которых и машина побольше и музыка погромче…

Почему бы не взять SpeechAPI (под Win) или просто записать звуковые файлы, а потом собрать нужную фразу?
Будет закрыто синтезерование голоса — значит будут другие ресурсы. Благо синтез не такая большая проблема, как распознавание. О каком начальстве вы говорите? Моя сфера работы несколько в стороне от программирования. А насчет отношения к ресурсам считаю так — если гугл не ограничивает кол-во запросов к своим сервисам, значит для него это приемлемо.
Синтез, действительно, не такая проблема как распознавание — существуют готовые библиотеки, с помощью которых это реализуется.
А насчет распознавания — а нужно ли оно, на самом деле, в этом проекте? Я имею в виду, что требуется то не распознавание речи, чтобы получить сказанное в виде текста, а только отделение команд от других звуков — голосовое управление. А в этом случае можно использовать опять же готовые библиотеки, для которых можно «нарезать» образцы команд, а затем использовать их для применения действий. Как при голосовом наборе номера в сотовом — он же не распознает сказанное, а просто сравнивает спектрограммы или сигналограммы.
Может уже существует готовый вариант распознователя голоса google под Win? Пока устраивает андроид на виртуалке, но может уже есть решения.
А чем Вас подход автора не устраивает? Нарезать звуковой поток и отослать файлы прикинувшись андроидом?
Нет, только не это — мечта становится реальностью!
Спасибо вам огромное за STT и TTS ссылки. Пойду через AutoIt прикручивать их. Уже есть даже готовые скрипты

Прощай работа =( — Привет отлаживание сутками на пролет умного дома =)
На моем андроиде 4.4.4 в настройках голосового поиска есть пункт «распознавание речи оффлайн», в котором я указал, что хочу использовать дополнительно к предустановленному английскому словарю еще русский и немецкий. Каждый хранится локально и весит около 20 мегабайт. Вроде бы, распознавание при этом должно делаться без интернета. Может, как-то к подобному прикрутиться? Андроидофон или планшет в систему ввести…
Only those users with full accounts are able to leave comments. Log in, please.