Речевой ввод HTML5 и преобразование текста в речь Google, проблема в Chrome - PullRequest
2 голосов
/ 19 мая 2011

Я создаю голосовое / текстовое памятное веб-приложение.Здесь: http://gustavstromberg.se/sandbox/html5/localstorage/ посмотрите на его источник (очень короткий, большая часть - css)

Это:

  • Распознавание голоса, работает только в Chrome, насколькоЯ знаю.
  • Локальное хранилище, для хранения заметок в виде текста.
  • Перевод текста Google в текст.

Все работает, но в разных браузерах.Голосовой ввод работает отлично, только в хроме.Преобразование текста в речь работает в сафари.

Для динамической загрузки заметки в элемент аудио> источника, который я использую:

$("#spokenmemory").html("<source src='http://translate.google.com/translate_tts?tl=en&q="+localStorage['memory']+"' />");

(localStorage ['memory'] содержит мои сохраненныетекстовая заметка)

Для воспроизведения недавно сохраненной заметки с помощью функции преобразования текста в речь, которую я использую, я использую:

$("#listenplay").click(function(){
    $("#spokenmemory")[0].play();
});

(spokenmemory - это атрибут id моей аудио-метки)

Это не работает для воспроизведения в Chrome, но если я захожу по ссылке на перевод (например: http://translate.google.com/translate_tts?tl=en&q=Japan, и мое текстовое примечание «Япония») в отдельной вкладке браузера, а затем возвращаюсьна мой сайт и перезагрузите страницу (с той же текстовой заметкой «Япония» сохранено), воспроизведение работает.Как странно и раздражает!

Кто-нибудь имеет представление об этом странном поведении?

Ответы [ 2 ]

2 голосов
/ 31 июля 2011

Это связано с тем, что Google ограничивает определенные типы запросов, чтобы предотвратить перегрузку службы.Таким образом, аудиофайл не выбирается, когда ваш браузер пытается его получить.Когда вы переходите по ссылке перевода, аудиофайл извлекается и кэшируется, поэтому воспроизведение работает (при условии, что текстовое примечание такое же).Это было моим наблюдением, но я не очень уверен.

Когда я использовал CURL для загрузки файла, я получил в ответ:


403. Это ошибка.

У вашего клиента нет прав на получение URL /translate_tts?q=hello с этого сервера.


0 голосов
/ 19 мая 2011

Я очень старался, Густав, и это то, что я нашел после небольшого исследования и тестирования.

Кажется, у Chrome проблемы с потоковой передачей mp3 (формат, который возвращает Google).Единственное решение, которое я могу себе представить, - это загрузить файл (cURL?) На ваш сервер, а затем представить его пользователю.Я предполагаю, что когда Google выпустит официальный API, также будет какая-то опция форматирования.

http://code.google.com/p/chromium/issues/detail?id=45152

http://www.trygve -lie.com / blog / entry /html_5_audio_element_and (да, кнопка воспроизведения того же цвета, что и фон, в стиле фанк)

...