直接播放 AVSpeechSynthesizer 生成的音频缓冲区

2023-12-27

我们需要对输出进行音频处理AVSpeechSynthesizer。所以我们开始使用write的方法AVSpeechSynthesizer类在顶部应用处理。它的。我们目前拥有的:

var synthesizer = AVSpeechSynthesizer()
var playerNode: AVAudioPlayerNode = AVAudioPlayerNode()
fun play(audioCue: String){
   let utterance = AVSpeechUtterance(string: audioCue)
   synthesizer.write(utterance, toBufferCallback: {[weak self] buffer in
      // We do our processing including conversion from pcmFormatFloat16 format to pcmFormatFloat32 format which is supported by AVAudioPlayerNode
      self.playerNode.scheduleBuffer(buffer as! AVAudioPCMBuffer, completionCallbackType: .dataPlayedBack)
   }
}

在 iOS 16 之前,所有这些都工作正常,但在 iOS 16 中,我们开始遇到此异常:

[AXTTSCommon] TTSPlaybackEnqueueFullAudioQueueBuffer: error -66686 enqueueing buffer

不确定这个异常到底意味着什么。因此,我们正在寻找解决此异常的方法,或者可能是播放缓冲区的更好方法。

UPDATE:

创建了一个空项目进行测试,结果表明,如果使用空块调用 write 方法,则会生成以下日志:


我用于 Swift 项目的代码:

let synth = AVSpeechSynthesizer()    
let myUtterance = AVSpeechUtterance(string: message)
myUtterance.rate = 0.4
synth.speak(myUtterance)

可以移动让合成器 = AVSpeechSynthesizer()脱离此方法并在该类的顶部声明并使用。

为 Xcode14 和 iOS 16 启用的设置:如果您使用的是 XCode14 和 iOS16,可能是语音内容下的语音未下载,您将在控制台上收到错误消息,提示标识符、来源、内容为零。您需要做的就是,转到设置中的辅助功能 -> 语音内容 -> 语音 -> 选择任何语言并下载任何配置文件。运行您的声音后,您将能够听到传递的文本中的语音。

它现在对我有用。

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

直接播放 AVSpeechSynthesizer 生成的音频缓冲区 的相关文章

  • Swift - 选择值后隐藏 pickerView

    我发现了类似的问题 他们的答案很有帮助 但我坚持最后一件事 我试图在点击字段时显示 pickerView 然后选择数据时 我希望 pickerView 隐藏 我可以从 pickerView 获取数据来隐藏 但是 pickerView 后面仍
  • iOS 11 安全区域布局指南向后兼容性

    启用安全区域布局指南是否与 iOS 11 以下版本兼容 我设法使用新的安全区域布局指南并保持与 iOS 9 和 iOS 10 的向后兼容性 编辑 正如 NickEntin 的评论所指出的 此实现将假定存在状态栏 但在 iPhone X 的横
  • ITMS-90535 无法使用最新的 Google Signin SDK 发布 iOS 应用程序

    我正在使用 xcode 7 GM 种子并通过 cocoapods 安装了最新的 Google Signin SDKpod Google SignIn 当我尝试将我的应用程序发布到苹果应用程序商店时 我收到附加错误 Help 以下是 Goog
  • UICollectionView 未出现

    我正在尝试设置UICollectionView 以编程方式在我的视图控制器中扩展UIViewController 由于某种原因 我的收藏视图根本没有显示 以下是我所拥有的 为什么没有出现 我将它连接到委托和数据源并将其添加为子视图self
  • 使用 Google place API 从 lat long 获取附近的地点

    我正在使用 google place API 即 https maps googleapis com maps api place search json location 33 7167 73 0667 radius 500 type f
  • 将 Xcode 的测试类助理编辑器与 Swift 类结合使用

    在 Xcode 中工作时 在助理编辑器中提取单元测试用例通常会很好 目前 我一直在手动选择测试文件 但我看到助理编辑器有一个选项Test Classes 我试图让这个选项自动提取我的测试文件 但我似乎无法让它工作 是否需要某种配置 它不适用
  • 为什么我的 tableView 函数运行了 3 次?

    我有一个 UITableView 并且有执行它所需的方法之一 func tableView tableView UITableView numberOfRowsInSection section Int gt Int println sec
  • 在 Swift 中自动移动 UISlider

    我想在按下按钮时将 UISlider 从 minValue 循环移动到 maxValue 并在再次按下按钮时将其停止在当前位置 我想使用 Swift 我遇到的主要问题是函数 slider setValue 太快了 我希望动画更慢 IBAct
  • Swift 中具有透明背景的按钮边框

    我怎样才能做一个UIButton边框看起来像下图 入门 按钮一样具有透明背景吗 我应该如何使用情节提要来实现这一点 或者如何以编程方式实现这一点 设置backgroundColor to clearColor使按钮透明 例如尝试下面的代码
  • PrepareForSegue之谜

    我在两个不同的 VC 中有一个prepareForSegue 方法 一个使用一个if声明 而另一个旨在使用switch 除了名称之外 代码几乎相同 这个效果很好 void prepareForSegue UIStoryboardSegue
  • Xcode 3.1.4 中内置分析器

    我想知道 Xcode 3 1 4 中内置的分析器是否使得单独使用 LLVM Clang 静态分析器变得多余 请参考这里的原文 使用 LLVM Clang 静态分析器查找内存泄漏 http www fruitstandsoftware com
  • 将数字分解为单个数字的数组

    如果我有整数 123 并且我想将数字分解为数组 1 2 3 最好的方法是什么 我已经搞乱了很多 并且我有以下工作 var number 123 var digits Array String number map Int strtoul S
  • 在 Instruments 中查找内存泄漏行

    我是 iOS 中的仪器新手 我正在尝试使用 Xcode 4 5 2 并按照本教程查找仪器中的内存泄漏 http soulwithmobiletechnology blogspot sg 2011 04 how to check memory
  • 对使用phonegap和钛的质疑[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 最近我听说了 PhoneGap 和 Titanium 移动网络应用程序的开发 我分析了这两个 Web 应用程序 并了解了如何使用它们以
  • 按范围迭代数组

    我有一个数组 1 2 3 4 5 6 100 我希望将此数组迭代 5 次 具体来说 取数组的前 5 个数字并获取平均值 继续处理接下来的 5 个数字并获取平均值 依此类推 我尝试过多种方法 例如Dequeue和 for 循环但未能获得所需的
  • Xcode 9 中的“addingPercentEncoding”是否损坏?

    在 Swift 3 x 和 Xcode 9 beta 2 中 使用addingPercentEncoding https developer apple com documentation swift string 1690785 addi
  • 自定义 MKAnnotationView - 如何捕获触摸而不忽略标注?

    我有一个自定义 MKAnnotationView 子类 它完全按照我想要的方式显示视图 在那个视图中 我有一个按钮 我想捕获按钮上的事件来执行操作 这很好用 但是 我不希望标注被忽略或消失 基本上 触摸标注中的按钮将开始播放声音 但我想保留
  • 在 UIView 中实现自定义 StaggereGrid,就像 SWIFT 中的 Etsy 应用程序一样

    我想实现一个像 Etsy 应用程序一样的 StaggeredGrid 但我对此一无所知 你能给我一些建议吗 这是我需要做的事情的屏幕截图 None
  • Swift 中通过不同类调用委托方法

    我正在获取 JSON 菜单 一旦 JSON 返回 我想运行 menuReady 来更新表的内容在 SomeTableViewController 类中 但下面的代码似乎不起作用 AIM Run 菜单就绪 JSON 返回后更新内容 PROBL
  • 退出导航控制器

    我试图离开初始视图控制器 并进入空白视图控制器 这很好 但是这会使空白视图控制器也成为导航控制器的一部分 这不是我想要的 我想脱离视图控制器 在视图控制器中 我尝试退出 它会自行弹出 当我尝试视图中的方法时 将出现目标视图控制器 self

随机推荐

  • “Hello World”——TDD 方式?

    自从我接触 TDD 以来 我一直在思考这个问题 构建 Hello World 应用程序的最佳方法是什么 这将在控制台上打印 Hello World 使用测试驱动开发 我的测试会是什么样子 以及大约什么班 Request No 类似维基百科
  • Apache Flink(如何唯一标记作业)

    是否可以使用唯一的名称来标记作业 以便我可以在以后停止它们 我真的不想 grep 并保留作业 ID 简而言之 我想在部署过程中停止一项作业并部署新作业 您可以在启动作业时为其命名execute name String 打电话 例如 val
  • 如何清除 IE 的图标缓存?

    我为我的网站定义了一个最喜欢的图标 任何访问过该网站的浏览器after我添加的图标可以很好地显示favicon 但我自己的浏览器拒绝显示图标 我已经尝试了我能想到的链接的所有变体
  • Java大文件AES加密很慢

    我正在尝试使用 AES CBC 算法加密 512 Mb 文件 大约需要 7 秒 这太长了 如何减少加密时间并使其更快 我使用固定密钥并尝试使用 CipherOutStream 以及 cipher update 而不是 cipher dofi
  • 为什么 Haskell 中基于 [Char] 的输入比基于 [Char] 的输出慢得多?

    这是一个不使用的常识 Char 在 Haskell 中读取大量数据 一用ByteString来完成这项工作 对此通常的解释是Chars 很大并且列表增加了它们的开销 然而 这似乎不会对输出造成任何问题 例如下面的程序 main intera
  • git重置后未暂存的文件消失了--hard

    我尝试过git reset hard HEAD n from git reflog我丢失了当前未暂存文件的所有内容 未暂存的文件是最后一个git add我做到了 在那之前我尝试过git reset到最后git commit 我所有的文件都消
  • 反应 onClick 问题

    我是 React 新手 我正在尝试将 onClick 事件连接到图像 以查看已按下的对象但无法使其工作 我已经尝试了在该网站上找到的几个答案 但没有一个起作用 可能是因为 var createItem jsx React DOM var R
  • Mono for Android OnPause 事件在 Galaxy Nexus 上未触发

    我整理了我的第一个 Mono for Android 项目 目标 API 级别 8 最低 Android 2 2 并将其部署到运行 2 3 4 的 HTC Incredible 1 一切都很顺利 并且在我的主要活动中出现了断点OnCreat
  • 对话框 ui 中的复选框不可选中

    我正在尝试使用 jQuery UI 对话框解决 z index 问题 类似于问题无法选择或取消选择 jQuery UI 模态对话框中的复选框 https stackoverflow com questions 10542327 cant s
  • 如何在 docker 容器中运行 npm 命令?

    我正在尝试在 docker 容器内以开发模式运行角度应用程序 但是当我使用 docker compose build 运行它时 它可以正常工作 但是当我尝试放置容器时 我收到以下错误 ERROR for sypgod Cannot star
  • jackson - 具有受控精度的双精度的 json 编码

    我正在使用双值数组对复杂的 Map 结构进行编码 高精度并不重要 输出大小才是重要的 所以我试图让 JSON 工具 在本例中为 Jackson 使用提供的 DecimalFormat 序列化双精度值 以下是我的最佳镜头 但由于对象映射器未选
  • C++(Windows)中的分配数及其可预测性

    我在用 CrtDump内存泄漏 http msdn microsoft com en gb library d41t22sb aspx识别我们软件中的内存泄漏 我们在多线程应用程序中使用第三方库 这个库确实存在内存泄漏 因此在我们的测试中
  • 加载 Google 地图时出现问题 - SensorNotRequired

    我正在尝试在 WordPress 网站上运行 Google 地图 代码在此完美运行JSFIDDLE http jsfiddle net 3VKQ8 55 但是当我将其带到 WordPress 时 我收到此错误 Google 地图 API 警
  • 线程过剩: glutPostRedisplay 被忽略

    我有一个程序可以更新程序输出 然后程序的状态会发生变化 当时间计时器 不是 openGL 计时器 而是在线程中实现的 发生时 以及从 glut 注册键盘输入 使用 glutKeyboardFunc 回调 时 就会发生这种情况 这两个事件都会
  • 缓冲区和缓存的区别?

    任何人都可以详细说明 系统内存中的缓冲区和缓存有什么区别 A buffer只是一个在短时间内保存数据的容器 当在任何给定时间出现的数据多于消费者可以使用 处理的数据时 这是一种先进先出的情况 数据传入 可能会被缓冲 并在一段时间后按照传入的
  • 为什么将 PDF 转换为纯文本如此困难?

    我需要将一些 PDF 转换回文本 我尝试了很多软件和在线工具 但结果总是平庸 从技术上来说为什么这么难 我们不要假设您正在谈论的 PDF 仅包含一些位图图像 因为很明显 在这种情况下您只能诉诸 OCR 及其所有限制 我们假设文本是在手边的
  • 如何从 heroku 访问私有 github 存储库?

    我有一个私人存储库 在部署到 Heroku 时我试图访问它 但是 Heroku 不允许我克隆私有存储库 并给出以下错误 正如我所期望的 Host key verification failed fatal The remote end hu
  • C:“zsh:中止”错误

    这是我的程序 include
  • SwiftUI - 按下按钮和导航时带有错误消息的表单

    我有以下场景 我有一个文本字段和一个按钮 我需要的是在该字段为空的情况下显示一条错误消息 如果不是 则将用户导航到下一个屏幕 我尝试通过使用字段值并检查按下按钮时是否为空来有条件地显示错误消息 但是 我不知道如何导航到下一个屏幕 struc
  • 直接播放 AVSpeechSynthesizer 生成的音频缓冲区

    我们需要对输出进行音频处理AVSpeechSynthesizer 所以我们开始使用write的方法AVSpeechSynthesizer类在顶部应用处理 它的 我们目前拥有的 var synthesizer AVSpeechSynthesi