- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Android-Chrome 上使用语音合成 API。问题是尽管有 4 种英语语音可用,但无论代码指定什么,浏览器始终使用美国英语。我可以使用其他语言,例如法语,而不是其他英语语音,例如 en-AU、GB 或 IN。
此代码从 getVoices 数组中过滤英国英语语音对象,并使用第一个来说出单词“tomato”。问题是这个词总是发音为“to-may-lo”而不是“to-mar-to”,这意味着我的文字不押韵。
显示使用的语音对象(在我尝试过的手机上)是 GB 的。
html...
<!DOCTYPE html>
<html lang="en-GB">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Let's not call the whole thing off</title>
<script src="tomato.js" defer></script>
</head>
<body>
<div id="tomato" lang="en-GB">Tomato</div>
<div id="platform"></div>
</body>
</html>
var platform = document.getElementById("platform");
var tomato = document.getElementById("tomato");
var voices = [];
var voicesGB = [];
voices = speechSynthesis.getVoices();
speechSynthesis.onvoiceschanged = function() {
voices = speechSynthesis.getVoices();
voicesGB = voices.filter(voice => /en(-|_)GB/.test(voice.lang));
};
function speak(word) {
var msg = new SpeechSynthesisUtterance();
msg.default = false;
msg.text = word;
msg.voice = voicesGB[0];
msg.lang = voicesGB[0].lang;
window.speechSynthesis.speak(msg);
for (var p in msg.voice) {
platform.innerHTML += p + ': ' + msg.voice[p] + '<br>\n';
}
}
tomato.addEventListener("click",() => {speak('tomato');});
最佳答案
在 Android 版本 5.0.2 上解决此问题的唯一方法是更改 Android 设置中的默认语音,然后重新启动设备。这将让您使用您想要的语音,但其他英语语音将不可用。 Here是一些更详细的信息:
SpeechSynthesis.getVoices() will return several options for English (United States, Australia, Nigeria, India, and United Kingdom) but only one is available at a time. You can pick which one by going to the Settings app, then Controls->Language and input->Text-to-speech options. Select the gear icon next to Google Text-to-speech Engine, then under Language you can update the exact locale you want to use. If you select "Install voice data" you can even select from a sample of different voices for some locales. You need to restart the device after changing this setting for it to take effect.
The voice used on an Android device when you play a SpeechSynthesisUtterance will depend on what you have selected in the Android settings. You can choose which language you want to play from javascript (see below for details) but you have no control over the locale or exact voice used.
This problem occurs on Chrome and Firefox, so it is likely a problem with the Android platform's implementation of the speechSynthesis API. It's unlikely that a browser update will fix this, but different versions of Android might. (My test device is on Android 5.0.2, so if this is fixed in a future update, please let me know).
关于javascript - Android-Chrome 中的 SpeechSynthesis : cannot change English voice from US English,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52975068/
我正在尝试将时间戳转换为各个时区的本地时间,并发现某些 TimeZone 在 Chrome(v76.0.38)中不支持,但在 Mozilla(v68.0.2)中工作正常。 let d = new
我有一个 shell 脚本(准确地说是 zsh),它使用 strftime "%I:%M %p %Z (%a, %b %d)" "$EPOCHSECONDS" 生成“当前时间”,例如 “02:45 P
例如,在基于 Bootstrap 的应用程序中,我可能会编写标记以使网格为大屏幕宽 8 列,小屏幕宽 2 列。 屏幕尺寸肯定会对屏幕设计产生影响,在我开始在 famo.us 中尝试之前,我想知道应该遵
我对 Famo.us 所呈现的“这是碎片,现在去做点什么”的方式没有意见,但如果能对我希望如何设置我的项目、结构、模块等有一些指导,那就太好了. 为什么没有实际网页的演示,而不是单屏 iPhone V
Famo.us Surfaces 有一个单一的方法来设置一个表面的大小。它们有一个“大小”属性,该属性采用 2 个数字组成的数组,这些数字直接对应于像素值。考虑到大量不同的屏幕尺寸,这在处理移动设备时
我在使用 Famo.us scrollview 的移动设备上遇到滚动性能不佳的问题。我正在使用 Famo.us/Angular。这是使用的代码:
创建 InputSurface 时,我无法使用各种属性,例如 autofocus 或 maxLength。 this.email = new InputSurface({ classe
有没有办法在现有的 DOM 结构中创建 famo.us 容器? 我的意思是创建一个 famo.us 上下文和生成的 .famous-container (?),并将其附加到现有元素。 最佳答案 当然。
我见过一些例子,人们在 famo.us 中对 Surface 类进行子类化,并重写 deploy 函数。这是 famo.us 在渲染上需要的特殊函数吗?我有一个我正在构建的“控件”,它有一些我想在它变
AFAIK,目前没有像 jsfiddle 或 codepen 这样的网站支持 Famo.us。是否有其他方法可以共享 Famo.us 的工作代码示例,这些示例足够永久以保证在 Stack Overfl
相关 this question about scrollview我对相反的感兴趣 - 如何从代码控制滚动并添加滚动条。只是想知道 famo.us 是否有任何预设方法可以做到这一点,或者我们是否必须手
这个问题在这里已经有了答案: How to remove the space between inline/inline-block elements? (41 个回答) 关闭 3 年前。
我从 the PocketSphinx tutorial 中读取了以下代码 config = cmd_ln_init(NULL, ps_args(), TRUE, "-hmm
考虑以下代码: public class ReadingTest { public void readAndPrint(String usingEncoding) throws Excepti
ISO 3166有一个包含 2 个字符的列表 country codes如 美国 , 英国 , FR . 我用过的购物车既有这些代码,也有文化代码,例如 zh-CN 或 en-UK . 对于一个单独的
我正在运行 Eclipse 并尝试创建一个简单的测试程序来尝试我们的 ResourceBundle 和几个不同的文件。该文件正确命名为 ResourceFile_us_US.properties。但是
我是山姆的新手。 我正在运行 aws-cli/2.1.37 Python/3.8.8 Darwin/19.6.0 exe/x86_64提示/关闭 SAM CLI,版本 1.29.0 请参阅下面的 te
我有一个旧数据库,时区格式如下: US/Eastern Australia/Melbourne 在我的新 Rails 应用程序中,我将它们保存为: Eastern Time (US & Canada)
如果你有国家代码US、FR(ISO-3166-1 alpha-2国家代码),你如何获得Locale代码( Locale.US, Locale.FRANCE) 来做这样的事情: System.out.p
我想上传一个文件到 amazon CLI 但它不工作 当我手动上传时它工作正常 我正在使用下面的命令 aws s3 cp /localfolderlocation awss3foldername --
我是一名优秀的程序员,十分优秀!