gpt4 book ai didi

fedora - SpeechSynthesis.getVoices() 是 Chromium Fedora 中的空数组

转载 作者:行者123 更新时间:2023-12-01 01:48:17 56 4
gpt4 key购买 nike

Chromium 是否支持语音合成 API?我需要安装声音吗?如果是这样,我该怎么做?我正在使用 Fedora。我需要安装额外的软件包才能使用像视频这样的声音吗?

我试过这段代码:

var msg = new SpeechSynthesisUtterance('I see dead people!');
msg.voice = speechSynthesis.getVoices().filter(function(voice) {
return voice.name == 'Whisper';
})[0];
speechSynthesis.speak(msg);

来自文章 Web apps that talk - Introduction to the Speech Synthesis API

但是函数 speechSynthesis.getVoices() 返回空数组。

我也试过:
window.speechSynthesis.onvoiceschanged = function() {
console.log(window.speechSynthesis.getVoices())
};

函数被执行,但数组也是空的。

https://fedoraproject.org/wiki/Chromium有信息可以使用 --enable-speech-dispatcher标志,但是当我使用它时,我收到了不支持标志的警告。

最佳答案

Is Speech Synthesis API supported by Chromium?



是的, Web Speech API在 Chromium 浏览器上有基本的支持,尽管 Chromium 和 Firefox 规范的实现都存在一些问题,请参阅 Blink>Speech , Internals>SpeechSynthesis , Web Speech .

Do I need to install voices? If so how can I do that? I'm using Fedora. Is voices like video that I need to install extra package for it to work?



是的,需要安装声音。 Chromium 未附带设置为 SpeechSynthesisUtterance 的声音。 voice默认属性,见 How to use Web Speech API at chromium? ; How to capture generated audio from window.speechSynthesis.speak() call? .

您可以安装 speech-dispatcher 作为系统语音合成服务器和 espeak 的服务器作为语音合成器。
$ yum install speech-dispatcher espeak

也可以设置 speech-dispatcher的配置文件在用户主文件夹中为 speech-dispatcher 设置特定选项以及您使用的输出模块,例如 espeak
$ spd-conf -u

使用 --enable-speech-dispatcher 启动 Chromium标志自动产生到 speech-dispatcher 的连接,您可以在其中设置 LogLevel 0之间和 5查看 Chromium 代码和 speech-dispatcher 之间的 SSIP 通信.
.getVoices()异步返回结果,需要调用两次

看到这个 electron GitHub 上的问题 Speech Synthesis: No Voices #586 .
window.speechSynthesis.onvoiceschanged = e => {
const voices = window.speechSynthesis.getVoices();
// do speech synthesis stuff
console.log(voices);
}
window.speechSynthesis.getVoices();

或组成一个异步函数,返回一个 Promise值(value)是声音的数组
(async() => {

const getVoices = (voiceName = "") => {
return new Promise(resolve => {
window.speechSynthesis.onvoiceschanged = e => {
// optionally filter returned voice by `voiceName`
// resolve(
// window.speechSynthesis.getVoices()
// .filter(({name}) => /^en.+whisper/.test(name))
// );
resolve(window.speechSynthesis.getVoices());
}
window.speechSynthesis.getVoices();
})
}

const voices = await getVoices();
console.log(voices);

})();

关于fedora - SpeechSynthesis.getVoices() 是 Chromium Fedora 中的空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46863170/

56 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com