5

Tôi gặp sự cố lạ với lời nhắc trên web. Tôi đã thiết lập một số mã để nói một chuỗi văn bản - rất hiếm khi, nó nói nó bằng một giọng nói bình thường ("Alex" từ Đọc chính tả và Cài đặt giọng nói trong Mac OS X). Nhưng thông thường, nó nói bằng giọng "Albert".Tổng hợp giọng nói của bài phát biểu bằng lời nói trên web - nhận danh sách bằng giọng nói

Tôi nhìn vào api bài phát biểu trên web w3c liệt kê ở đây:

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

và có một giao diện được gọi

SpeechSynthesisVoiceList {}

Tôi cố gắng để truy cập vào chức năng này nhưng tôi không thể.

Tôi làm cách nào để truy cập danh sách giọng nói này? Tôi đang sử dụng chrome canary, và tôi đã thử nhiều phương pháp để làm điều này. Những gì tôi mong chờ để làm việc sẽ là:

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

hoặc

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

Tôi cũng đã chạy:

console.log(window) 

và tôi thấy rất nhiều điều liên quan đến việc api bài phát biểu trên web và tổng hợp giọng nói , nhưng không có gì về giọng nói.

Trả lời

4

Bạn nên sử dụng speechSynthesis.getVoices() để nhận danh sách tất cả các giọng nói. Đây là kết quả từ 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

Mỗi https://code.google.com/p/chromium/issues/detail?id=340160, điều này có thể không có sẵn khi tải trang. Giải pháp thay thế 'setInterval (..., 1);' thực hiện mẹo như được sử dụng tại http://aurelio.audero.it/demo/speech-synthesis-api-demo.html –

+1

Lưu ý rằng đầu ra (và cụ thể là tên) đã thay đổi kể từ đó ... –

+0

Sử dụng Firefox, tôi tìm thấy một giọng nói khả dụng, nhưng sử dụng Srware Iron, (một nhánh của Chrome), tôi không tìm thấy. – Jackalope

Các vấn đề liên quan