Text to speach - как заставить ардуино говорить
- Войдите на сайт для отправки комментариев
есть такая классная примочка на гугле - пример воспроизведения на русском "доброе утро" http://translate.google.com/translate_tts?tl=ru&q=доброе утро
судя по всему возвращаетмя поток содержащий mp3 звук
вот интересно как mp3 упаковано? если взять ардуино с ethernet шилдом и с mp3 шилдом что нужно запрограмировать, чтобы воспроизвести вразу с гугла в динамик?
если такая штука получится то можно в комнатах ставить устройства воспроизведенич любых фраз на любом языке
есть идеи? как мог бы выглядеть пограммный код такой ардуины? я пока не получил mp3 шилд, поэтому не могу попробовать методом тыка. открывают URL и получаю TCP stream или UDP stream? потом побайтно его запихиваю в mp3 шилд?
шилд купил такой http://dx.com/p/sd-card-mp3-music-shield-audio-expansion-board-white-171917
вот интересно как mp3 упаковано? если взять ардуино с ethernet шилдом и с mp3 шилдом что нужно запрограмировать, чтобы воспроизвести вразу с гугла в динамик?
Если открыть вашу ссылку Хромом и сохранить файлег, то можно посмотреть ега свойства.
Не только воспроизведения, но и распознования и перевода.
Идея чисто абстрактная - сохранять локально файлег по запросу и воспроизводить его... не важно чем.
зы
Для лучшего понимания, куда народ это прикручивает
http://habrahabr.ru/post/129936/
http://habrahabr.ru/post/133782/
Если открыть вашу ссылку Хромом и сохранить файлег, то можно посмотреть ега свойства.
да, сохраняет обычный mp3
спасибо за ссылке ниже, да, распознование будет в плюс.
файл я думаю лишний - можно сразу считывать поток с ethernet шилда и отправлять поток на music шилд
мне пока не ясно как это програмировать на ардуине. Считать текстовый заголовок HTTP, а потом после новой строки все байты будут потоком mp3? т.е. примерно так?
- открываем TCP соединение на translate.goolge.com порт 80
- формируем клиентом заголовок по стандарту HTTP и там же указываем нужную нам ссылку на воспроизведение голоса
- ждем входящих данных, считываем несколько строк пришедшего заголовка HTTP, как только считаем пустую строку переключаемся на передачу бинарных данных на musci шилд и в цикле передаем все байты без остатка на music шилд до исчерпания потока.
- формируем клиентом заголовок по стандарту HTTP и там же указываем нужную нам ссылку на воспроизведение голоса
Да, думаю имено так и есть.
Вот, смотрите как со стороны сервера выглядит отправка файла в браузер по http (C#)
Тут я правда отправляю, не mp3, а PDF, но суть, думаю та же самая.
Главное - отправил Content-Disposition заголовок и правильный ContentType
А потому тупо копирую бинарные данные файла в выходной поток ответа.
Не вникал, есть вероятность, что потом еще сам сервер этот поток в base64 энкодит, но не уверен. Возможно отправляет "как есть".
А вообщем-то можно особо не гадать, а просто взять вот такую тулзу Fiddler - The Free Web Debugging Proxy by Telerik и просто посмотреть что там бегает между браузером и сервисом гугла.
А вообщем-то можно особо не гадать, а просто взять вот такую тулзу Fiddler - The Free Web Debugging Proxy by Telerik и просто посмотреть что там бегает между браузером и сервисом гугла.
спасибо за ссылку - запустил, посомтрел, судя по всему там бинарный поток с mp3, нет кодирования
вот как выглядит заголовок и начало сообщения
Я бы кешировал фразы постоянного употребления - просто так, в случае отвала инета получить хотя бы минимальный функционал. Да и помнить нужно, что у этой гугловской тузлы есть лимит на количество запросов за единицу времени, как то захотел сохранить файлегов произношения частотного словаря, создал плейлист для фубара на две тысячи слов и сказал "Copy to...", после двухсотого сохранённого файла получил бан по IP, на страничке-заглушке было сказано, что негоже вести себя так активно.
Я бы кешировал фразы постоянного употребления - просто так, в случае отвала инета получить хотя бы минимальный функционал. Да и помнить нужно, что у этой гугловской тузлы есть лимит на количество запросов за единицу времени, как то захотел сохранить файлегов произношения частотного словаря, создал плейлист для фубара на две тысячи слов и сказал "Copy to...", после двухсотого сохранённого файла получил бан по IP, на страничке-заглушке было сказано, что негоже вести себя так активно.
хорошая идея))) я не думаю что десяток запросов в час даст бан, умному дому больше не нужно, но кэшировать дейсвтительно можно было бы. теоретически можно сделать какое-то центрально устройство которое будет это все кэшировать. начать надо с простого
смотрю в сторону чипов VS1053 - они имеют SPI интерфейс и умеют декодировать mp3, что-то типа такого и стоит на music шилде
Насколько я знаю там есть слот для сд карты, залить туда мп3 и не терзать гугл...
или события динамически генерятся?
Насколько я знаю там есть слот для сд карты, залить туда мп3 и не терзать гугл...
или события динамически генерятся?
может быть по разному, хочется универсальности
Насколько я знаю там есть слот для сд карты, залить туда мп3 и не терзать гугл...
или события динамически генерятся?
может быть по разному, хочется универсальности
Забейте. Оверинжиниринг - одна из самых распространенных и вредных болезней. Ну то есть "универсальность" - это хорошо, но все время нужно себя сдерживать в этом :) Тем паче в контроллерах. Где ресурсов мало. И "жесткие костыли" намного чаще чем на PC являются более приемлемым решением.
А SD/MP3 - все одно осваивать нужно будет. Начинать же с чего-то нужно. И первые тесты делать на готовых MP3 шках - будет самым мудрым решением. Самый быстрый способ услышать как "ардуина заговорила".
Тем более что mp3 плеер, если память не изменяет, есть в семплах от производителя этого шилда. Можно его брать за базу, и потом его курочить пытатся заставить играть "из сети", а не "с SD"
Забейте. Оверинжиниринг - одна из самых распространенных и вредных болезней. Ну то есть "универсальность" - это хорошо, но все время нужно себя сдерживать в этом :) Тем паче в контроллерах. Где ресурсов мало. И "жесткие костыли" намного чаще чем на PC являются более приемлемым решением.
А SD/MP3 - все одно осваивать нужно будет. Начинать же с чего-то нужно. И первые тесты делать на готовых MP3 шках - будет самым мудрым решением. Самый быстрый способ услышать как "ардуина заговорила".
Тем более что mp3 плеер, если память не изменяет, есть в семплах от производителя этого шилда. Можно его брать за базу, и потом его курочить пытатся заставить играть "из сети", а не "с SD"
как посмотреть)) воспроизведение хотя бы чего то не интересно - можно wav без шилда сделать. интересен именно минимальный интеллект - например динамические сообщения. и тут как раз наоборот наворачивания кэширования - сильно усложнение! а прикрутить ethernet к mp3 и перекидывать байты оттуда туда дело должно быть не хитрое
waw - да. mp3 - а тут вам шилд нужен будет и разбиратся с ним. а тут первым шагом - в любом случае будет воспроизведение фиксированного mp3
Да банально - ну вот собрали вы. И не работает. То ли c ethernet не верно работает, то ли в шилд не так шлете - не ведомо.
А так хотя бы уже знаете "mp3 я играть умеют", теперь задача "как играть его из другого источника".
Вообщем, все-таки очередность задачь идет
1. Играть mp3
2. Играть из своего источника
И, могу ошибатся, но не факт что "дело не хитрое" окажется не хитрым. Давно с ним копался, но что-то смутно маячит в памяти, что и с SD карты он играл треки - напрямую. То есть чипу говорится "играй вот такой сектор", а он сам обращается/читает SD карту. Не через ардуино прогоняя поток.
Так что еще нужно будет разобратся как в него поток подать. И сам чип много чего умеет, но вот на некоторых шилдах китаезы далеко не все его ноги разводят и часть функций/интерфейсов - не доступна (я при работе с Midi с этим столкнулся).
Так что скорее всего все у вас должно получится, скорее всего я в пугалки играю, но "никогда не говори..." ;)
Так что скорее всего все у вас должно получится, скорее всего я в пугалки играю, но "никогда не говори..." ;)
Так и вышло. Похоже зря пугал
Вот примерчик
http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Dev/Arduino/Shields/MP3_Shield_Example.zip
Играет MP3 не с SD карты, а из массива в памяти дуины.
Ну значит, осталось только, через Ethernet заполнить этот массив потоком из http response
Ну значит, осталось только, через Ethernet заполнить этот массив потоком из http response
спасибо за пример, придет шилд попробую
если пойдет то куплкю голые vs1053 - можно будет сделать кастомное устройство