5

Mam dziwny problem z api web mowy. Przygotowałem kod do wypowiadania ciągu tekstowego - bardzo rzadko, mówi to normalnym głosem ("Alex" z Dictation and Speech Settings w Mac OS X). Ale zwykle mówi się głosem "Albert".synteza mowy mowy mowy webowej - uzyskanie listy głosowej

Patrzę na W3C API mowy internetowych wymienionych tutaj:

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

i nie jest interfejsem o nazwie

SpeechSynthesisVoiceList {}

Próbuję uzyskać dostęp do tej funkcji , ale nie mogę.

Jak uzyskać dostęp do tej listy głosowej? Używam chrome canary i próbowałem wielu metod. Co by się spodziewać do pracy byłoby:

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

lub

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

Ja również uruchomić:

console.log(window) 

i widzę wiele rzeczy dotyczących API web mowy i syntezy mowy , ale nic o głosach.

Odpowiedz

4

Powinieneś użyć speechSynthesis.getVoices(), aby uzyskać listę wszystkich głosów. To jest wynik z 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

Na https://code.google.com/p/chromium/issues/detail?id=340160 ta funkcja może nie być dostępna po załadowaniu strony. Obejście 'setInterval (..., 1);' działa tak samo jak w http://aurelio.audero.it/demo/speech-synthesis-api-demo.html –

+1

Zwróć uwagę, że wynik (a konkretnie nazwy) zmienił się od tego czasu ... –

+0

Używając Firefoksa, znajduję jeden głos dostępny, ale używając Srware Iron (rozwidlenia Chrome), nie znajduję żadnego. – Jackalope