首页 > 解决方案 > 将语言添加到 Web 语音 API

问题描述

我有一个表格,可以让我输入文本并像这样说

<script>
  window.addEventListener('DOMContentLoaded', () => {
    const form = document.getElementById('voice-form');
    const input = document.getElementById('speech');

    form.addEventListener('submit', event => {
      event.preventDefault();
      const toSay = input.value.trim();
            
      const msg = new SpeechSynthesisUtterance();
      msg.text = toSay;
      msg.lang = "sv-SE";
      speechSynthesis.speak(msg);
    });
  });
</script>
<body>
    <form id="voice-form">
        <textarea type="text" id="speech"></textarea><br>
        <input type="submit"/>
    </form>
</body>

看起来像

截屏

但似乎 sv-SE 没有实现。

window.speechSynthesis.onvoiceschanged = function ()
{
  voices = window.speechSynthesis.getVoices();
  console.log("voices", voices);
}

向我展示了 21 种声音,现在我已经确认瑞典语未实施。

0: SpeechSynthesisVoice {voiceURI: "Microsoft Zira Desktop - English (United States)", name: "Microsoft Zira Desktop - English (United States)", lang: "en-US", localService: true, default: true}
1: SpeechSynthesisVoice {voiceURI: "Microsoft David Desktop - English (United States)", name: "Microsoft David Desktop - English (United States)", lang: "en-US", localService: true, default: false}
2: SpeechSynthesisVoice {voiceURI: "Google Deutsch", name: "Google Deutsch", lang: "de-DE", localService: false, default: false}
3: SpeechSynthesisVoice {voiceURI: "Google US English", name: "Google US English", lang: "en-US", localService: false, default: false}
4: SpeechSynthesisVoice {voiceURI: "Google UK English Female", name: "Google UK English Female", lang: "en-GB", localService: false, default: false}
5: SpeechSynthesisVoice {voiceURI: "Google UK English Male", name: "Google UK English Male", lang: "en-GB", localService: false, default: false}
6: SpeechSynthesisVoice {voiceURI: "Google español", name: "Google español", lang: "es-ES", localService: false, default: false}
7: SpeechSynthesisVoice {voiceURI: "Google español de Estados Unidos", name: "Google español de Estados Unidos", lang: "es-US", localService: false, default: false}
8: SpeechSynthesisVoice {voiceURI: "Google français", name: "Google français", lang: "fr-FR", localService: false, default: false}
9: SpeechSynthesisVoice {voiceURI: "Google हिन्दी", name: "Google हिन्दी", lang: "hi-IN", localService: false, default: false}
10: SpeechSynthesisVoice {voiceURI: "Google Bahasa Indonesia", name: "Google Bahasa Indonesia", lang: "id-ID", localService: false, default: false}
11: SpeechSynthesisVoice {voiceURI: "Google italiano", name: "Google italiano", lang: "it-IT", localService: false, default: false}
12: SpeechSynthesisVoice {voiceURI: "Google 日本語&quot;, name: "Google 日本語&quot;, lang: "ja-JP", localService: false, default: false}
13: SpeechSynthesisVoice {voiceURI: "Google 한국의&quot;, name: "Google 한국의&quot;, lang: "ko-KR", localService: false, default: false}
14: SpeechSynthesisVoice {voiceURI: "Google Nederlands", name: "Google Nederlands", lang: "nl-NL", localService: false, default: false}
15: SpeechSynthesisVoice {voiceURI: "Google polski", name: "Google polski", lang: "pl-PL", localService: false, default: false}
16: SpeechSynthesisVoice {voiceURI: "Google português do Brasil", name: "Google português do Brasil", lang: "pt-BR", localService: false, default: false}
17: SpeechSynthesisVoice {voiceURI: "Google русский", name: "Google русский", lang: "ru-RU", localService: false, default: false}
18: SpeechSynthesisVoice {voiceURI: "Google 普通话(中国大陆)", name: "Google 普通话(中国大陆)", lang: "zh-CN", localService: false, default: false}
19: SpeechSynthesisVoice {voiceURI: "Google 粤語(香港)", name: "Google 粤語(香港)", lang: "zh-HK", localService: false, default: false}
20: SpeechSynthesisVoice {voiceURI: "Google 國語(臺灣)", name: "Google 國語(臺灣)", lang: "zh-TW", localService: false, default: false}

是否可以在该列表中添加一种语言?

标签: htmlgoogle-chrometext-to-speechwebspeech-api

解决方案


可用语言由可用的浏览器或底层 TTS 引擎决定。例如,如果您在安装了适当语言语音的 Windows 10 上使用 Microsoft Edge,您可能会选择,而且我认为如果您安装其他语言,Chromebook 可能会有更广泛的范围。如果您需要可靠的特定语言,您可能需要转向 3rd 方语音合成(如 Polly 或 Google 的 Cloud-to-Speech),或者如果您不关心语音质量,则使用确实有瑞典语选项的mespeak / espeak .


推荐阅读