【发布时间】:2020-08-20 02:27:58
【问题描述】:
它已经存在六年了,所以我想我应该给 Speech Synthesis API 一个旋转:
这是我的第一个测试:
const vocalWelcome = new SpeechSynthesisUtterance('Welcome to the Main Men-You. Please select your option.');
vocalWelcome.pitch = 3;
vocalWelcome.rate = 0.95;
window.speechSynthesis.speak(vocalWelcome);
我注意到,尽管将 pitch 属性明确设置为 3,但 Firefox Mobile 68 和 Chrome Mobile 81 上的语音音调要高得多> 在我的 Android 上比在我的笔记本电脑上的 Firefox 75 和 Chrome 81 上。
对此我能做些什么吗?我是否需要进行浏览器嗅探/设备嗅探,然后相应地调整 pitch 属性?
或者我应该将其视为初期问题,因为在 2020 年,Speech Synthesis API 规范还没有准备好投入生产?
【问题讨论】:
-
不知道您是否必须处理这个问题,但我对为外国计算机选择的可用语音和默认语音有疑问。我使用了一个 polyfill,发现 polyfill 并没有真正解决所有问题。
-
当然。我可以看到它并不是特别复杂 - 我必须将 "menu" 写为上面的 "men-you" 以阻止第二个音节被吞下一半。但这很好,因为我不想将它用于任何过于复杂的事情 - 我只是热衷于为我的应用添加几个渐进式增强。
-
语音合成在支持和底层技术方面无处不在 - 大多数人将使用任何原生语音解决方案。如果您确实需要一致的解决方案,请考虑使用a library 或云 TTS 服务。
-
@Rounin - 浏览器使用每个平台上的底层语音提供程序,可能在顶部加上一些糖来确定它们通过什么。每个操作系统都有其底层提供程序(Windows = SAPI / Media Foundation、iOS/OSX = VoiceOver、Linux = PicoTTS 或 eSpeak,尽管该列表并不详尽)。此外,谷歌包括自己的语音提供商,一些浏览器在后端使用在线服务进行渲染。除非您使用 3rd 方库,否则不能保证您的声音相同。另请注意,用户的语言设置也可能不同。
-
仅供参考,我遇到的问题不仅仅是声音不同,而是如果我没有明确设置它们就无法正常工作。
标签: javascript google-chrome firefox mobile text-to-speech