iOS 上的 JS 语音合成问题

2023-11-26

我最近实现了一个基本的 Web 应用程序,它依靠 Google 的 TTS URL 生成清晰的 MP3 文件以在前端播放。

此后,这需要接受额外的安全检查,这意味着我必须更新代码库才能使用替代方法。

其中一种替代方案是 javascript 的语音合成 API,即 SpeechSynthesisUtterance() 和 window.speechSynthesis.speak('...')。这在我的台式机和笔记本电脑上运行得非常好,但一旦我在 iOS 设备上使用它,音频的速率就会显着加快。

谁能建议我可以做什么来解决这个问题?

请参阅下面的示例代码:

var msg = new SpeechSynthesisUtterance(); 
    msg.text = item.title;
    msg.voice = "Google UK English Male";
    msg.rate = 0.7;
    msg.onend = function(){
        console.log('message has ended');
        $('.word-img').removeClass('img-isplaying');
    };
    msg.onerror = function(){
        console.log('ERROR WITH SPEECH API');
        $('.word-img').removeClass('img-isplaying');
    };
window.speechSynthesis.speak(msg);

IOS 不允许以编程方式使用新的 SpeechSynthesis-Api。用户必须显式触发操作。我可以理解这个决定。但我不明白,为什么 Api 不能在网络应用程序中工作,比如播放音频文件。这在 IOS 的默认 safari 中不起作用,但在 webapps 中起作用。

这里有一个小技巧:

<a id="trigger_me" onclick="speech_text()"></a>
<script>
    function speech_text() {
        var msg = new SpeechSynthesisUtterance();
        /* ... */
    }
    /* and now you must trigger the event for #trigger_me */
    $('#trigger_me').trigger('click');
</script>

这仅适用于本机 dom 元素。如果您以编程方式将新标签添加到 dom 中,例如......

$('body').append('<a id="trigger_me" onclick="speech_text()"></a>');

...该功能将不会被触发。看起来 IOS-Safari 在 domload 之后只注册一次特殊内部函数的事件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS 上的 JS 语音合成问题 的相关文章

  • 等待动态加载脚本

    在我的页面正文中 我需要插入以下代码作为 AJAX 调用的结果 p Loading jQuery p p Using jQuery p 我不能使用 load 由于文档已经加载 因此该事件不会触发 这安全吗 如果没有 我如何确保在执行自定义生
  • 在java中将DataURL图像转换为图像文件

    我在我的 java servlet 中接收图像 DataURL 它看起来像 data image jpeg base64 9j 4AAQSkZJRgABAQAAAQABAA 我需要将其另存为图像文件 我该怎么做 The simplest w
  • 加载新的 Turbo Frame 时如何执行 JavaScript

    我在 Rails 应用程序中使用 Turbo Frames 并且在每个页面上都有
  • Vue 多个组件位于一个包/文件中

    假设我想创建一个 UI 包 如何将多个组件放入一个 JS 文件中 通常我会将不同的组件放在不同的文件中 import ButtonText from ButtonText vue import ButtonIcon from ButtonI
  • 有没有一种方法可以使页面布局在 100% 缩放下完美契合,同时又尊重更大的缩放系数?

    有多种方法可以布局网页 使其适合浏览器视口 DOMwindow 当我说 适合 时 我包括更改所用字体的大小 更改 DIV IMG 和其他渲染元素的宽度和高度 以及允许元素 流畅 移动 目标是使页面在所有显示设备 从小型手机到大桌面屏幕 上看
  • 更改 Angular 模型以更新 Kendo

    我一直在一个项目中使用 Angular 最近才发现 Kendo Angular 项目位于http kendo labs github io angular kendo http kendo labs github io angular ke
  • jQuery 选择器在控制台中不起作用

    我一辈子都无法解决这个问题 我正在运行 js 容器状态 是页面上正在运行的 js 的控制台日志 它显示一个选择器 但如果我想在控制台中执行任何操作 它只会返回 null 我假设我在某个地方过度编写了 jQuery 函数 就好像我调用了 jQ
  • 使用 iOS 设备作为 TCP 客户端 - 无 Bonjour

    我想使用 iOS 设备作为 TCP 客户端 但我找不到可理解的 API 指南 示例来说明如何做到这一点 我试过SimpleNetworkStreams and PictureSharing 但他们都使用 Bonjour 我可以轻松建立 UD
  • 获取 Swift 子目录中资源的所有 URL

    我正在尝试为 iOS 应用程序的子目录中的所有资源创建 URL 数组 我似乎无法到达正确的路径 即使我不知道名称 我也希望能够检索 URL 即我不想将文件名硬编码到代码中 Below is a screen shot of the hier
  • Javascript 清理:插入可能的 XSS html 字符串的最安全方法

    目前我正在将此方法与 jQuery 解决方案结合使用 以清除字符串中可能的 XSS 攻击 sanitize function str return htmlentities str ENT QUOTES return div div tex
  • 在 WordPress 和 woocommerce 中禁用 zxcvbn.min.js

    如您所知 zxcvbn min js 约为 400kb 并且默认在 WordPress 网站中加载 我想知道如何阻止加载此 JavaScript 库 因为我不想在我的网站中检查密码长度 将以下内容添加到主题的 function php 或自
  • 变量值的 swap() 函数[重复]

    这个问题在这里已经有答案了 我无法达到下面这个交换函数的预期结果 我希望将值打印为 3 2 function swap x y var t x x y y t console log swap 2 3 任何线索将不胜感激 您的函数正在内部交
  • 即时将图像添加到 AR 资源以进行图像识别

    ARKit1 5介绍图像识别 在代码中 您必须创建一组参考图像 如下所示 let referenceImages ARReferenceImage referenceImages inGroupNamed AR Resources bund
  • JavaScript 匿名函数语法

    下面两个块有什么区别 block 1 console log anonymous block block 2 function anon console log anonymous block 2 我在 Netbeans 中运行了这个 使用
  • iOS 11 getUserMedia 不起作用?

    苹果公司发表声明称getUserMedia将在 iOS 11 上完全正常运行 安装 iOS 11 Beta 版本 5 后 我确实收到一条消息 表明我的网站请求访问我的相机和麦克风 但似乎是这样的 video src window URL c
  • “WebSocket 在连接建立之前已关闭”是什么意思?

    我正在使用 JavaScript 和联盟平台 http www unionplatform com我该如何诊断这个问题 非常感谢 如果你去http jsbin com ekusep 6 edit http jsbin com ekusep
  • 在窗口调整大小和窗口加载时动态调整 pixi 舞台及其内容的大小

    我正在尝试在窗口调整大小时动态调整 pixi 舞台 画布和内容 的大小 并且最初以浏览器窗口的大小加载 而不改变比例 我使用以下内容将初始大小基本上设置为window innerWidth window innerHeight 但它做了一些
  • 更新查询时 ios 中出现“数据库锁定”错误

    我正在使用下面的代码更新查询 using sqlite 但我越来越 database is locked error 我尝试搜索一些 SO 链接 建议关闭数据库 但我再次执行此操作时遇到相同的错误 我已经提到过代码中出现错误的地方 cons
  • 如何防止IE11弹出(您确定要离开此页面)

    我正在处理一个页面 除了一个下拉菜单可供选择外 我无需输入任何内容 但在 IE11 中 当我尝试转到下一页时 它会弹出该消息 我想阻止这种弹出的发生 所以我只是想知道 IE11 中弹出窗口的默认行为是什么 因为它不会出现在 Chrome 或
  • NSURLConnection 是否自动保留从服务器发送的 cookie?

    我从 ios 登录到我的龙卷风后端并发回 secure cookie 我注意到只要验证我设置的 secure cookie 我还可以请求其他信息 NSURLConnection 会保留 cookie 多久 或者关闭应用程序后 cookie

随机推荐

  • 在 Python 的 Decimal 类中设置精度

    我刚刚学习了Python中的Decimal类 在修改十进制数字的精度时遇到了一些问题 代码 from decimal import def main getcontext prec 50 print Decimal 748327402479
  • Resharper 具有多个参数的函数上的右括号缩进

    我在 c 中有一些代码行 Resharper 缩进如下 Console WriteLine Hello this MySuperFunction argument1 argument2 argument3 Console WriteLine
  • TF400813: 用户“”无权访问此资源

    我有自己的私人组织和存储库 我还有多个目录 除了 Microsoft 帐户 目录之外 所有目录都可以工作 我可以使用 Microsoft 帐户目录毫无问题地登录 Azure Devops 我看到了我的组织 我可以浏览我的存储库 代理 管道等
  • 表格单元格中的 CSS 文本溢出?

    我想使用 CSStext overflow在表格单元格中 如果文本太长而无法容纳在一行中 它将用省略号进行剪辑 而不是换行到多行 这可能吗 我试过这个 td overflow hidden text overflow ellipsis wh
  • 如何将 ASP.NET 5 (vnext) 从 Beta5 升级到 Beta6

    从 ASP NET v5 Beta4 升级到 Beta5 有点痛苦 升级到 Beta6 有多难 像这样的备忘单 4 5答案会很方便 升级很顺利 这是备忘单 先决条件 升级到beta6 dnvm upgrade 如果您愿意 请安装 x64 d
  • 如何从java代码调用XSL模板?

    如何从java代码调用XSL模板 请注意 我不需要知道如何在 Java 中通过 XSL 转换 xml 文档 我真正需要的是 我有一些 XSLT 文档 其中包含一个可以执行某些操作的模板 例如
  • 隐藏 iPhone 地址栏,高度为 100%

    关于此的很多帖子 但并不完全适合我的情况 我的页面的灵活尺寸设置为 100 宽度和 100 高度 因此典型的加载滚动功能不起作用 有什么想法或其他解决方案吗 Thanks CSS margin 0 padding 0 html body w
  • Json.NET:用双引号反序列化

    我正在尝试反序列化作为服务响应收到的 json 字符串 客户端是Windows Phone 7 C 语言 我在用Json NET 詹姆斯 牛顿 金反序列化器直接将Json字符串转换为对象 但有时 Json 字符串包含一些带有双引号 的注释信
  • Go(lang) 中的地址空间是什么?

    我尝试了解 Go 中并发编程的基础知识 几乎所有的文章都使用这个词 地址空间 例如 所有 goroutine 共享相同的地址空间 这是什么意思 我尝试从 wiki 理解以下主题 但没有成功 http en wikipedia org wik
  • setTooltipText() 和 android:tooltipText 在 Nougat 中不起作用

    我有一个 ImageButton 当我对我的应用程序进行一些测试时 我发现我无法显示tooltipText在我的带有 Android N 设备的小米 Note 4 中 但它在我的带有 Android O 的三星 S8 上显示得非常好 知道为
  • 找不到中央目录记录的末尾

    我正在使用 C 程序下载 zip 文件 但收到错误 at System IO Compression ZipArchive ReadEndOfCentralDirectory at System IO Compression ZipArch
  • 当方法的签名定义为 Collection 时,为什么方法不能采用 Collection

    我有一个获取 SResource 对象列表的方法 public static List
  • 从 jQuery 调用 ASMX

    我试图从 jQuery 调用 ASMX 方法 但没有成功 以下是我的代码 我不明白我缺少什么 文件Something js function setQuestion ajax type POST data dataType json url
  • rbind data.frames 没有名称

    我想弄清楚为什么rbind加入没有名称的 data frames 时 函数无法按预期工作 这是我的测试 test lt data frame id rep c a b each 3 time rep 1 3 2 black 1 6 whit
  • 将阿拉伯语存储在 SQL 数据库中

    我尝试在 SQL 2008 数据库中存储阿拉伯字符串 但它转换为 问号 为什么 我该怎么办 您需要为 varchar char 列选择阿拉伯排序规则或使用 Unicode nchar nvarchar CREATE TABLE test c
  • C++11:重载无法解析递归 decltype

    在下面的代码中 我尝试构建类型网格 例如 之间float and int 将结果推广为float float join float f int return f float join float f float return f 然后我介绍
  • CSS - 允许 div 伸出其父级

    我一直在寻找一种方法来允许 div 脱离其父级 父级具有 float right 我试图单击它来切换显示 隐藏子元素 但子元素在 div 之后显示 隐藏 我想让它从父 div 中 突出 谢谢 您的解释不是很清楚 但这是一个右对齐父 div
  • 如何在seaborn中填充线图下的区域

    I want to fill the area under a line plot so it looks as the picture below 代替 基于以下 csv 文件构建 01 01 97 1 01 02 97 2 01 03
  • OpenGL 抑制 MFC 基于对话框的应用程序中的异常

    我有一个使用 MSVS2005 创建的 MFC 驱动的基于对话框的应用程序 这是我的问题一步一步 我的对话框上有按钮和相应的点击处理程序 代码如下 int i 0 i 3 我正在运行程序的调试版本 当我单击按钮时 Visual Studio
  • iOS 上的 JS 语音合成问题

    我最近实现了一个基本的 Web 应用程序 它依靠 Google 的 TTS URL 生成清晰的 MP3 文件以在前端播放 此后 这需要接受额外的安全检查 这意味着我必须更新代码库才能使用替代方法 其中一种替代方案是 javascript 的