5

Sto avendo un problema strano con il linguaggio web api. Ho impostato un codice per pronunciare una stringa di testo - molto raramente, lo pronuncia con una voce normale ("Alex" dalle impostazioni di dettatura e discorso in Mac OS X). Ma di solito, parla nella voce "Albert".sintesi vocale discorso web api - ottenere lista vocale

Sto guardando il W3C Web API discorso elencati qui:

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

e non v'è un'interfaccia chiamata

SpeechSynthesisVoiceList {}

Sto cercando di accedere a questa funzionalità ma non posso

Come accedere a questo elenco di voci? Sto usando il canarino cromato e ho provato numerosi metodi per farlo. Quello che mi aspetto di lavorare sarebbe:

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

o

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

ho anche eseguire:

console.log(window) 

e vedo molte cose per quanto riguarda il Web API vocale e sintesi vocale , ma niente di voci.

risposta

4

È necessario utilizzare speechSynthesis.getVoices() per ottenere un elenco di tutte le voci. Si tratta di un'uscita da 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, questo potrebbe non essere disponibile al caricamento della pagina. Una soluzione alternativa di 'setInterval (..., 1);' fa il trucco usato su http://aurelio.audero.it/demo/speech-synthesis-api-demo.html –

+1

Si noti che l'output (e in particolare nomi) cambiati da allora ... –

+0

Utilizzando Firefox, trovo una voce disponibile, ma usando Srware Iron, (una fork di Chrome,) non ne trovo nessuno. – Jackalope

Problemi correlati