Проблема TTS с Google Translate

Я тестирую простой файл HTML, который содержит:

<audio src="http://translate.google.com/translate_tts?tl=en&q=A+simple_text+to+voice+demonstration." controls autoplay>

с Chrome v11.0.696.68 и FF v4.0.1. Я иду через прокси-сервер, и он не работает. Ничего не воспроизводится, и нажатие кнопки воспроизведения не работает в Chrome. В FF он мигает, а затем показывает «X» над элементом управления. Журналы ошибок ничего не показывают.

Итак, я разбил шаги:

  1. Ввод URL в любом браузере работает

  2. wget -q -U Mozilla -O /tmp/tts.mp3 "http://translate.google.com/translate_tts?tl=en&q=Добро пожаловать+в+наш+фантастический+текст+в+голос+демонстрацию." дает мне файл, который отлично воспроизводится в обоих браузерах.

  3. Если я отправляю этот файл с моего локального веб-сервера, он работает нормально (то есть тот, который не проходит через прокси). то есть src="http://localhost/tts.mp3"

Я в тупике. Если бы проблема заключалась в прокси-сервере, тогда доступ к wget и адресной строке не должен работать. Если проблема в том, что src является URL-адресом, то он не должен работать с моего локального сервера.

Любые подсказки? предложения?


person CyberFonic    schedule 20.05.2011    source источник
comment
См. также stackoverflow.com/questions/9893175/google-text -to-speech-api   -  person David d C e Freitas    schedule 15.11.2012


Ответы (2)


Причина, по которой это не работает, скорее всего, заключается в том, что translate.google.com ограничивает определенные типы запросов, чтобы предотвратить перегрузку службы. Например, если вы используете wget без параметра пользовательского агента «-U Mozilla», вы получите HTTP 404, поскольку служба ограничивает ответы от строки пользовательского агента wget по умолчанию.

В вашем случае, похоже, происходит то, что translate.google.com возвращает HTTP 404, если в запрос включен HTTP Referrer. Когда вы запускаете wget из командной строки, реферер отсутствует. Когда вы используете тег audio на веб-странице, при запросе перевода предоставляется реферер HTTP. Я только что попробовал следующее и получил 404.

wget --referer="http://foo.com" -U Mozilla -O /tmp/tts.mp3 "http://translate.google.com/translate_tts?tl=en&q=Welcome+to+our+fantastic+text+to+voice+demonstration

Однако, если вы уберете опцию --referer, она сработает.

person Brady Holt    schedule 14.06.2011
comment
Провел еще несколько тестов, и я также обнаружил, что существует ограничение длины, при котором служба останавливается. Кроме того, похоже, что Google недавно еще больше ограничил использование этой службы. - person CyberFonic; 17.06.2011

Сервис работает здесь (11 ноября 2011 г.), но ограничен 100 символами. Вы можете разбить текст на фрагменты по 100 символов, загрузить результат в формате mp3 для каждого фрагмента, а затем соединить фрагменты для окончательного файла Mp3.

person user816809    schedule 11.11.2011