5

У меня возникла странная проблема с веб-речью api. Я установил код, чтобы говорить строку текста - очень редко, он говорит это обычным голосом («Алекс» из настроек диктовки и речи в Mac OS X). Но обычно это говорит в голосе «Альберт».web speech api синтез речи - получение списка голосов

Я смотрю на w3c веб-Speech API перечислены здесь:

https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#dfn-ttsgetvoices

и есть интерфейс называется

SpeechSynthesisVoiceList {}

Я пытаюсь получить доступ к этой функции , но я не могу.

Как получить доступ к этому голосовому списку? Я использую хром-канарейку, и я пробовал множество способов сделать это. То, что я ожидал бы работать будет:

var u = new SpeechSynthesisUtterance(); 
    console.log(u.getVoices()); 

или

var u = new SpeechSynthesisVoiceList(); 
    console.log(u); 

Я также запустить:

console.log(window) 

и я вижу множество вещей, касающихся веб-Speech API и синтеза речи , но ничего о голосах.

ответ

4

Вы должны использовать speechSynthesis.getVoices(), чтобы получить список всех голосов. Это выход из Google Chrome 33:

[{ 
    "default": true, 
    "localService": false, 
    "lang": "en-US", 
    "name": "Google US English", 
    "voiceURI": "Google US English" 
}, { 
    "default": false, 
    "localService": false, 
    "lang": "en-GB", 
    "name": "Google UK English Male", 
    "voiceURI": "Google UK English Male" 
}, { 
    "default": false, 
    "localService": false, 
    "lang": "en-GB", 
    "name": "Google UK English Female", 
    "voiceURI": "Google UK English Female" 
}, { 
    "default": false, 
    "localService": false, 
    "lang": "es-ES", 
    "name": "Google Español", 
    "voiceURI": "Google Español" 
}, { 
    "default": false, 
    "localService": false, 
    "lang": "fr-FR", 
    "name": "Google Français", 
    "voiceURI": "Google Français" 
}, { 
    "default": false, 
    "localService": false, 
    "lang": "it-IT", 
    "name": "Google Italiano", 
    "voiceURI": "Google Italiano" 
}, { 
    "default": false, 
    "localService": false, 
    "lang": "de-DE", 
    "name": "Google Deutsch", 
    "voiceURI": "Google Deutsch" 
}, { 
    "default": false, 
    "localService": false, 
    "lang": "ja-JP", 
    "name": "Google 日本人", 
    "voiceURI": "Google 日本人" 
}, { 
    "default": false, 
    "localService": false, 
    "lang": "ko-KR", 
    "name": "Google 한국의", 
    "voiceURI": "Google 한국의" 
}, { 
    "default": false, 
    "localService": false, 
    "lang": "zh-CN", 
    "name": "Google 中国的", 
    "voiceURI": "Google 中国的" 
}, { 
    "default": false, 
    "localService": true, 
    "lang": "", 
    "name": "native", 
    "voiceURI": "native" 
}] 
+3

Per https://code.google.com/p/chromium/issues/detail?id=340160, это не может быть доступен на странице загрузки. Обходной путь 'setInterval (..., 1);' делает трюк, используемый в http://aurelio.audero.it/demo/speech-synthesis-api-demo.html –

+1

Обратите внимание, что вывод (и, в частности, имена) сменилось с тех пор ... –

+0

Используя Firefox, я нахожу один голос доступным, но с помощью утилиты «Утюг железа» (вилка Chrome) я не нахожу. – Jackalope