Speech synthesis no longer returning a list of voices in macOS 12.3
<rdar://problem/89952347>
Created attachment 454076 [details] patch
(In reply to chris fleizach from comment #2) > Created attachment 454076 [details] > patch --- a/LayoutTests/fast/speechsynthesis/speech-synthesis-voices-non-mock.html +++ a/LayoutTests/fast/speechsynthesis/speech-synthesis-voices-non-mock.html @@ -0,0 +1,38 @@ I'd suggest renaming the test just to voices-non-mock.html, removing speech-synthesis already in the dir name. I find the repetition of the dir name in the file names very inconvenient for both command lines and Finder. +<script src="../../resources/js-test-pre.js"></script> Include js-test.js instead of js-test-pre.js. +<body id="body"> Remove id="body", not used. +<div id="console"></div> No need to include this line, remove. + description("This tests that we can get synthesizer voices "); Extra space after "voices". + for (var k = 0; k < list.length; k++ ) { Extra space after k++. Also, let k is better than var k in this case. + if (voice.lang == "en-US") { + foundEnglishVoice = true; + } + if (voice.default) { + foundDefaultVoice = true; + } I don't think we use { } for a one line block. +<script src="../../resources/js-test-post.js"></script> No need to include this line, remove.
Created attachment 454133 [details] patch
Committed r291009 (248185@main): <https://commits.webkit.org/248185@main> All reviewed patches have been landed. Closing bug and clearing flags on attachment 454133 [details].
*** Bug 238249 has been marked as a duplicate of this bug. ***
This fix shipped with Safari 15.5 (all platforms).
The bug seems fixed but we are still mising a major amount of Text-To-Speech features in Safari on our Webpage and as well on our Application that is depending on the WebView. Is there something we can do to enable the old TTS again or even to fix this on the JS-Side?
(In reply to Marius Landwehr from comment #8) > The bug seems fixed but we are still mising a major amount of Text-To-Speech > features in Safari on our Webpage and as well on our Application that is > depending on the WebView. Is there something we can do to enable the old TTS > again or even to fix this on the JS-Side? What are these features that are missing?
Will speak with our QA Team which languages are currently missing. Will come back to you ASAP!
I can say for sure that german language has been missing since Safari 15.5.
(In reply to Saraphina Böttcher from comment #11) > I can say for sure that german language has been missing since Safari 15.5. Few questions for you: 1. What version of macOS are you running (assuming you're referring to Safari 15.5 on the Mac)? 2. In the Web Inspector console, what is the result of `window.navigator.language`? 3. Also from the Web Inspector console, could you please copy-paste the results of `window.speechSynthesis.getVoices()`? I have a machine running macOS 12.6 + Safari 16, and the result of (3) includes 48 voices, one of which is Anna: SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.anna", name: "Anna", lang: "de-DE", localService: true, default: true} I also tried macOS 12.6 + Safari 15.6.1 and got the same results (48 voices including Anna). Thanks!
Thank you very much for the speedy reply. 1. I just recently updated to macOS 12.6 with Safari 16.0 and a few days ago macOS 12.5.1 with Safari 15.6.1 and both didn't contain german 2. `window.navigator.language` yields "en-GB" 3. `window.speechSynthesis.getVoices()` returns 44 languages for me, not including Anna see here: 0 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.Alex", name: "Alex", lang: "en-US", localService: true, default: true} 1 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.alice", name: "Alice", lang: "it-IT", localService: true, default: true} 2 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.alva", name: "Alva", lang: "sv-SE", localService: true, default: true} 3 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.carmit", name: "Carmit", lang: "he-IL", localService: true, default: true} 4 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.damayanti", name: "Damayanti", lang: "id-ID", localService: true, default: true} 5 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.ellen", name: "Ellen", lang: "nl-BE", localService: true, default: true} 6 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.fiona", name: "Fiona", lang: "en-SCOTLAND", localService: true, default: true} 7 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.Fred", name: "Fred", lang: "en-US", localService: true, default: true} 8 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.ioana", name: "Ioana", lang: "ro-RO", localService: true, default: true} 9 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.joana", name: "Joana", lang: "pt-PT", localService: true, default: true} 10 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.jorge", name: "Jorge", lang: "es-ES", localService: true, default: true} 11 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.juan", name: "Juan", lang: "es-MX", localService: true, default: true} 12 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.kanya", name: "Kanya", lang: "th-TH", localService: true, default: true} 13 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.karen", name: "Karen", lang: "en-AU", localService: true, default: true} 14 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.kyoko", name: "Kyoko", lang: "ja-JP", localService: true, default: true} 15 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.laura", name: "Laura", lang: "sk-SK", localService: true, default: true} 16 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.lekha", name: "Lekha", lang: "hi-IN", localService: true, default: true} 17 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.luca", name: "Luca", lang: "it-IT", localService: true, default: true} 18 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.luciana", name: "Luciana", lang: "pt-BR", localService: true, default: true} 19 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.maged", name: "Maged", lang: "ar-SA", localService: true, default: true} 20 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.mariska", name: "Mariska", lang: "hu-HU", localService: true, default: true} 21 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.meijia", name: "Mei-Jia", lang: "zh-TW", localService: true, default: true} 22 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.melina", name: "Melina", lang: "el-GR", localService: true, default: true} 23 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.milena", name: "Milena", lang: "ru-RU", localService: true, default: true} 24 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.moira", name: "Moira", lang: "en-IE", localService: true, default: true} 25 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.monica", name: "Monica", lang: "es-ES", localService: true, default: true} 26 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.nora", name: "Nora", lang: "nb-NO", localService: true, default: true} 27 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.paulina", name: "Paulina", lang: "es-MX", localService: true, default: true} 28 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.rishi", name: "Rishi", lang: "en-IN", localService: true, default: true} 29 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.samantha", name: "Samantha", lang: "en-US", localService: true, default: true} 30 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.sara", name: "Sara", lang: "da-DK", localService: true, default: true} 31 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.satu", name: "Satu", lang: "fi-FI", localService: true, default: true} 32 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.sinji", name: "Sin-ji", lang: "zh-HK", localService: true, default: true} 33 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.tessa", name: "Tessa", lang: "en-ZA", localService: true, default: true} 34 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.thomas", name: "Thomas", lang: "fr-FR", localService: true, default: true} 35 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.tingting", name: "Ting-Ting", lang: "zh-CN", localService: true, default: true} 36 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.veena", name: "Veena", lang: "en-IN", localService: true, default: true} 37 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.Victoria", name: "Victoria", lang: "en-US", localService: true, default: true} 38 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.xander", name: "Xander", lang: "nl-NL", localService: true, default: true} 39 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.yelda", name: "Yelda", lang: "tr-TR", localService: true, default: true} 40 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.yuna", name: "Yuna", lang: "ko-KR", localService: true, default: true} 41 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.yuri", name: "Yuri", lang: "ru-RU", localService: true, default: true} 42 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.zosia", name: "Zosia", lang: "pl-PL", localService: true, default: true} 43 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.zuzana", name: "Zuzana", lang: "cs-CZ", localService: true, default: true} Several colleagues who are also missing german and we have a lot of customers who also complain that german is missing, so if there is anything more i can provide you with, feel free to get in touch
(In reply to Saraphina Böttcher from comment #13) > Thank you very much for the speedy reply. > > 1. I just recently updated to macOS 12.6 with Safari 16.0 and a few days ago > macOS 12.5.1 with Safari 15.6.1 and both didn't contain german > > 2. `window.navigator.language` yields "en-GB" > > 3. `window.speechSynthesis.getVoices()` returns 44 languages for me, not > including Anna see here: > 0 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.Alex", > name: "Alex", lang: "en-US", localService: true, default: true} > 1 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.alice", > name: "Alice", lang: "it-IT", localService: true, default: true} > 2 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.alva", > name: "Alva", lang: "sv-SE", localService: true, default: true} > 3 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.carmit", > name: "Carmit", lang: "he-IL", localService: true, default: true} > 4 SpeechSynthesisVoice {voiceURI: > "com.apple.speech.synthesis.voice.damayanti", name: "Damayanti", lang: > "id-ID", localService: true, default: true} > 5 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.ellen", > name: "Ellen", lang: "nl-BE", localService: true, default: true} > 6 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.fiona", > name: "Fiona", lang: "en-SCOTLAND", localService: true, default: true} > 7 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.Fred", > name: "Fred", lang: "en-US", localService: true, default: true} > 8 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.ioana", > name: "Ioana", lang: "ro-RO", localService: true, default: true} > 9 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.joana", > name: "Joana", lang: "pt-PT", localService: true, default: true} > 10 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.jorge", > name: "Jorge", lang: "es-ES", localService: true, default: true} > 11 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.juan", > name: "Juan", lang: "es-MX", localService: true, default: true} > 12 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.kanya", > name: "Kanya", lang: "th-TH", localService: true, default: true} > 13 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.karen", > name: "Karen", lang: "en-AU", localService: true, default: true} > 14 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.kyoko", > name: "Kyoko", lang: "ja-JP", localService: true, default: true} > 15 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.laura", > name: "Laura", lang: "sk-SK", localService: true, default: true} > 16 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.lekha", > name: "Lekha", lang: "hi-IN", localService: true, default: true} > 17 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.luca", > name: "Luca", lang: "it-IT", localService: true, default: true} > 18 SpeechSynthesisVoice {voiceURI: > "com.apple.speech.synthesis.voice.luciana", name: "Luciana", lang: "pt-BR", > localService: true, default: true} > 19 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.maged", > name: "Maged", lang: "ar-SA", localService: true, default: true} > 20 SpeechSynthesisVoice {voiceURI: > "com.apple.speech.synthesis.voice.mariska", name: "Mariska", lang: "hu-HU", > localService: true, default: true} > 21 SpeechSynthesisVoice {voiceURI: > "com.apple.speech.synthesis.voice.meijia", name: "Mei-Jia", lang: "zh-TW", > localService: true, default: true} > 22 SpeechSynthesisVoice {voiceURI: > "com.apple.speech.synthesis.voice.melina", name: "Melina", lang: "el-GR", > localService: true, default: true} > 23 SpeechSynthesisVoice {voiceURI: > "com.apple.speech.synthesis.voice.milena", name: "Milena", lang: "ru-RU", > localService: true, default: true} > 24 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.moira", > name: "Moira", lang: "en-IE", localService: true, default: true} > 25 SpeechSynthesisVoice {voiceURI: > "com.apple.speech.synthesis.voice.monica", name: "Monica", lang: "es-ES", > localService: true, default: true} > 26 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.nora", > name: "Nora", lang: "nb-NO", localService: true, default: true} > 27 SpeechSynthesisVoice {voiceURI: > "com.apple.speech.synthesis.voice.paulina", name: "Paulina", lang: "es-MX", > localService: true, default: true} > 28 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.rishi", > name: "Rishi", lang: "en-IN", localService: true, default: true} > 29 SpeechSynthesisVoice {voiceURI: > "com.apple.speech.synthesis.voice.samantha", name: "Samantha", lang: > "en-US", localService: true, default: true} > 30 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.sara", > name: "Sara", lang: "da-DK", localService: true, default: true} > 31 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.satu", > name: "Satu", lang: "fi-FI", localService: true, default: true} > 32 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.sinji", > name: "Sin-ji", lang: "zh-HK", localService: true, default: true} > 33 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.tessa", > name: "Tessa", lang: "en-ZA", localService: true, default: true} > 34 SpeechSynthesisVoice {voiceURI: > "com.apple.speech.synthesis.voice.thomas", name: "Thomas", lang: "fr-FR", > localService: true, default: true} > 35 SpeechSynthesisVoice {voiceURI: > "com.apple.speech.synthesis.voice.tingting", name: "Ting-Ting", lang: > "zh-CN", localService: true, default: true} > 36 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.veena", > name: "Veena", lang: "en-IN", localService: true, default: true} > 37 SpeechSynthesisVoice {voiceURI: > "com.apple.speech.synthesis.voice.Victoria", name: "Victoria", lang: > "en-US", localService: true, default: true} > 38 SpeechSynthesisVoice {voiceURI: > "com.apple.speech.synthesis.voice.xander", name: "Xander", lang: "nl-NL", > localService: true, default: true} > 39 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.yelda", > name: "Yelda", lang: "tr-TR", localService: true, default: true} > 40 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.yuna", > name: "Yuna", lang: "ko-KR", localService: true, default: true} > 41 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.yuri", > name: "Yuri", lang: "ru-RU", localService: true, default: true} > 42 SpeechSynthesisVoice {voiceURI: "com.apple.speech.synthesis.voice.zosia", > name: "Zosia", lang: "pl-PL", localService: true, default: true} > 43 SpeechSynthesisVoice {voiceURI: > "com.apple.speech.synthesis.voice.zuzana", name: "Zuzana", lang: "cs-CZ", > localService: true, default: true} > > > Several colleagues who are also missing german and we have a lot of > customers who also complain that german is missing, so if there is anything > more i can provide you with, feel free to get in touch Have you downloaded the enhanced version of Anna on your computer? I wonder if that is causing it to be excluded from the list without returning the compact version
Not that I know. How can i check that?
(In reply to Saraphina Böttcher from comment #15) > Not that I know. How can i check that? System Preferences > Accessibility> Spoken Content > Voice >. Manage Voices See if Anna premium was downloaded
No it is not downloaded. Just for the record (not sure if this is important) i can only select "Anna" and nothing about premium
(In reply to Saraphina Böttcher from comment #17) > No it is not downloaded. Just for the record (not sure if this is important) > i can only select "Anna" and nothing about premium With Ventura coming out sometime in the near future, I suspect this will be resolved. This is not a webkit issue, but something going on with the speech system on your Mac. It's possible we won't be able to fix on 12.x series. We can see if there's more data available if you want to file a Feedback.
Is there a known workaround to get this up and running again? We have many customers who are relying on the TTS Service and we can't really do anything about this...
(In reply to chris fleizach from comment #18) > (In reply to Saraphina Böttcher from comment #17) > > No it is not downloaded. Just for the record (not sure if this is important) > > i can only select "Anna" and nothing about premium > > With Ventura coming out sometime in the near future, I suspect this will be > resolved. This is not a webkit issue, but something going on with the speech > system on your Mac. It's possible we won't be able to fix on 12.x series. We > can see if there's more data available if you want to file a Feedback. I've created a Feedback with the number: FB11599855