1

Я использую Web Speech API для текста в речь и должен иметь возможность определять голос по умолчанию. Для этого я вызываю speechSynthesis.getVoices() и перечисляю голоса, чтобы найти тот, где значение по умолчанию - true.Является ли Chrome OS German правильным голосом по умолчанию на Chrome OS?

Я нахожусь в США и использую английский язык на всех своих устройствах. В Chrome в Windows и Mac по умолчанию возвращается голос Google US English. Однако на Chromebook по умолчанию возвращается голос Chrome OS German. Действительно ли это верно по умолчанию?

Есть ли еще какие-либо языковые настройки на Chromebook, которые мне не хватает? Я попытался изменить голос по умолчанию для ChromeVox (который также был Chrome OS German, прежде чем я его изменил), но не повезло.

Или есть способ передать язык getVoices()?

HTML

HTML, язык моей страницы установлен на американском английском.

<!DOCTYPE html> 
<html lang="en-US"> 

Я пробовал lang = "en", удаляя декларацию DOCTYPE и т. Д. Без каких-либо изменений.

Javascript

var _voices = []; 

    speechSynthesis.onvoiceschanged = listVoices; 

    function listVoices() { 
     _voices = speechSynthesis.getVoices(); 
    } 

    function getDefaultVoice() { 
     var voice = ''; 
     _voices.some(function(v) { 
      if (v.default) { 
       voice = v.name; 
       return true; 
      } 
     }); 
     return voice; 
    } 
+1

FWIW - все устройства Chromebook, которыми я управляю для школьного округа по умолчанию для Chrome OS German, когда ChromeVox впервые включен. Это Acer C720s. – Dan

+0

Чтобы быть немного более ясными, они показывают немецкий язык, но голос по-прежнему остается английским. – Dan

+0

Мой британский Dell 11 Chromebook тот же; флаг по умолчанию установлен на немецкий голос! Если вы установите lang в сообщении на «en-GB», тогда он автоматически использует голос GB без необходимости специально проголосовать. –

ответ

0

Я понял это. Мое значение по умолчанию - немецкий. Это руководство из Treehouse объясняет процесс:

http://blog.teamtreehouse.com/getting-started-speech-synthesis-api

Явное вы сделать что-то вроде этого:

var utterance = new SpeechSynthesisUtterance('Hello Treehouse'); 
var voices = window.speechSynthesis.getVoices(); 

utterance.voice = voices.filter(function(voice) { return voice.lang == 'en-GB'; })[0]; 

window.speechSynthesis(utterance); 

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

+1

Если вы установите lang на 'SpeechSynthesisUtterance', это, по-видимому, автоматически использует первый голос ГБ, который немного проще, чем фильтрация голосов :) –