5

Ich habe ein seltsames Problem mit der Web-Sprache API. Ich habe einen Code eingerichtet, um eine Textzeichenfolge zu sprechen - sehr selten spricht er es mit normaler Stimme ("Alex" aus Diktat- und Spracheinstellungen in Mac OS X). Aber normalerweise spricht es in der Stimme "Albert".web rede api sprachsynthese - bekommen voice list

Ich bin auf der W3C-Sprache api suchen hier aufgelistet:

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

und es ist eine Schnittstelle

SpeechSynthesisVoiceList {}

Ich versuche, diese Funktion aufgerufen zugreifen aber ich kann nicht.

Wie würde ich auf diese Stimmliste zugreifen? Ich benutze Chrome Canary, und ich habe zahlreiche Methoden ausprobiert. Was ich würde erwarten, wäre zu arbeiten:

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

oder

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

Ich habe auch laufen:

console.log(window) 

und ich sehe viele Dinge in Bezug auf die Web-Sprache api und Sprachsynthese aber nichts über Stimmen.

Antwort

4

Sie sollten speechSynthesis.getVoices() verwenden, um eine Liste aller Stimmen zu erhalten. Dies ist eine Ausgabe von 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, diese beim Laden der Seite nicht verfügbar. Ein Workaround von 'setInterval (..., 1);' funktioniert wie unter http://aurelio.audero.it/demo/speech-synthesis-api-demo.html –

+1

Beachten Sie, dass die Ausgabe (und speziell Namen geändert) seitdem ... –

+0

Mit Firefox finde ich eine Stimme verfügbar, aber mit Srware Iron, (eine Gabelung von Chrome,) finde ich keine. – Jackalope