在 Swift 2.0 中更改 AVAudioPlayer 的速率变量时声音失真

2024-03-30

我正在开发一个简单的音频播放应用程序。它大约有 10 个音频文件,每个文件的正常播放速度为每分钟 100 节拍。用户可以输入一个节奏变量(70 到 140 b.p.m. 之间),该变量在调用 play() 函数之前被分配给 (tempo/100) AVAudioPlayer 速率变量...

@IBAction func playPause(sender: AnyObject) {
    if !isPlaying {
        let audioPath = NSBundle.mainBundle().pathForResource(selectedTrack, ofType: "mp3")
        do {
            try player = AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: audioPath!))
            player.enableRate = true
            player.rate = Float(tempo) / 100
            player.play()
            isPlaying = !isPlaying
        } catch {
            print ("play error")
        }
     }
}

以音频的正常速度 (100b.p.m.) 播放效果非常好。然而,即使改变一个 bpm 单位的速度,播放的声音也很差。节奏转换听起来很准确(即降低节奏变量会导致音频变慢,反之亦然),并且音调听起来像是保持不变(尽管在持续音符中有点“摇摆”),但声音的质量似乎受到了重大负面影响。我可能期望这种情况发生在更极端的速率变化(速率200%)时,但即使在 99% 和 101% 时,它也是完全明显的。

我使用的是 44k/16 位 .wav,然后尝试了 .mp3(各种质量),结果都相同。我也看过这个,即使不一样,看起来也很相似(尽管查询从未得到解决)...AVAudioPlayer 速率变化会引入伪影/失真 https://stackoverflow.com/questions/31128172/avaudioplayer-rate-change-introduces-artifacts-distortion

使用其他软件(DAW 和虚拟 DJ 软件)更改这些文件的播放速度不会产生相同的异常,因此我的假设是,在波形上插入额外数据点的算法对于我的目的来说可能不够强大。

但如果有人能给我一个解决方案,我会非常兴奋。


None

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

在 Swift 2.0 中更改 AVAudioPlayer 的速率变量时声音失真 的相关文章

  • FBFriendPickerViewController 未显示所有好友

    我正在使用 FBFriendPickerViewController 在我的 iOS 应用程序中显示要邀请的朋友列表 它仅显示安装了该应用程序的好友列表 为什么是这样 我还在我的应用程序中直接与 Facebook sdk 交互 以使用 Gr
  • Obj-C / Swift 项目中的致命陷阱异常

    我开始将 Swift 代码集成到我的 Obj C 项目中 一切都进展顺利 但今天 当我更新到 Xcode 6 1 时 事情变得很糟糕 我从之前运行良好的 Swift 代码中收到了许多 陷阱 异常 第一次崩溃位于我的 UIFont 扩展中 这
  • 如何消除禁用的 UIButton 的灰色外观

    我有一个 UIButton 我希望它处于禁用状态时与处于正常状态时看起来完全相同 现在它看起来有点灰色 不要使用enabled属性或setEnabled NO方法 而是使用 myButton setUserInteractionEnable
  • 如何使用 Objective-C 协议

    我需要将 Picker 选择的值继承到其他地方 我正在尝试下面的代码 但空值即将到来 请检查我哪里出错了 我必须继承在中传递的字符串值PickerView 请检查代码 选取器1 h import
  • 在ScreenUpdates之后调用drawViewHierarchyInRect时iOS8缩放故障:YES

    我正在将一个项目从 iOS7 转换为 iOS8 该项目使用自定义转换 并且需要在加载完成后捕获模式afterScreenUpdates YES并看到整个屏幕放大一秒钟然后缩小 我还在 iOS 版 Flickr 应用程序的各个部分之间以及在
  • SpriteKit 碰撞检测中 SKSpriteNode 之间的间隙

    我已经尝试解决这个问题很长一段时间了 我有一个具有简单平台物理原理的游戏 其中玩家跌倒在一个方块上 这可以阻止他跌倒 这是可行的 但是玩家停止的位置和实际对象 精灵节点的位置之间存在明显的差距 这是一个屏幕截图 它应该是不言自明的 clas
  • 使用GCD实现并发读独占写模型

    我试图了解使用 Grand Central Dispatch GCD 实现控制资源访问的并发读独占写模型的正确方法 假设有一个 NSMutableDictionary 被大量读取并且偶尔更新 确保读取始终与字典状态一致的正确方法是什么 当然
  • Swift - 预期 '{' 启动 setter 定义

    我正在关注高级 swift WWDC 2014 视频 使用类上的下标来委托给类属性 但使用与视频中相同的语法时出现错误 enum Direction case North South East West class Place Thing
  • Java - 无缝改变循环剪辑的音量?

    我有一个循环剪辑 我像这样改变音量 clip stop clip flush FloatControl fc FloatControl clip getControl FloatControl Type MASTER GAIN fc set
  • 使用自动布局约束时如何获取视图的当前宽度和高度?

    我不是在谈论frame属性 因为从中你只能得到xib中视图的大小 我说的是当视图由于其约束而调整大小时 可能在旋转之后 或响应事件 有没有办法获取当前的宽度和高度 我尝试迭代其约束来寻找宽度和高度约束 但这不是很干净 并且在存在内在约束时会
  • 使用 xctool 运行单个 KIWI 规范

    有没有人能够成功地将 KW SPEC 变量传递给 xctool 我正在尝试使用以下命令来运行单个 KIWI 规范https github com kiwi bdd Kiwi wiki Kiwi FAQ q how do i run a si
  • Facebook iOS SDK:登录 Facebook 时无需总是询问应用程序的权限

    我在我的应用程序中使用 Facebook iOS SDK 我有两个类似的问题 有没有办法知道当前是否有用户登录 我现在使用的是在成功登录时存储访问令牌和到期日期 并在应用程序启动时加载它们 我的问题是 如果会话无效 我可以为用户提供登录选项
  • 如何在 Swift 中调用 Objective-C 实例类型方法?

    我有一个 Objective C 类 如下所示 interface CustomObjectHavingData NSObject property nonatomic strong NSData objWithData instancet
  • APNS(Apple 推送通知服务器)的反馈服务

    我们正在使用Java作为推送通知提供商APNS I我能够将消息发送到APNS但我不知道如何获得该消息的反馈 请帮忙 反馈服务具有类似于用于发送推送通知的接口的二进制接口 您可以通过以下方式访问生产反馈服务feedback push appl
  • Swift 中的字典是否应该转换为类或结构?

    我正在开发一个本机 iOS 应用程序 该应用程序从我们也可以控制的 Web 服务接收 JSON 格式的数据 该计划是在大约 18 个月内更换后端数据库 以支持不同的平台 考虑到这一点 我们希望确保 iOS 应用程序能够相对容易地适应新的数据
  • 每次 UIScrollView 释放时都会发生内存泄漏

    在我的应用程序中 我有一个滚动视图和四个表格视图 每次拖动然后释放时 我都会泄漏 48 字节 这确实很重要 正如您所看到的 两组泄漏都有相同的来源 有人见过这样的泄漏吗 Edit 1 当我单击泄漏旁边的箭头时 我会得到泄漏的以下信息 您所看
  • 观察 UIDatePicker 的变化

    我注意到没有委托来观察 UIDatePicker 中的变化 有没有一种方法可以在不确认任何内容的情况下检测选择器中何时进行更改 例如它旋转并落在新数字上的那一刻 我希望能够检测到这一点 我考虑过关键值观察 但我不认为有一个属性会立即改变 您
  • 我在 NSDateComponentsFormatter 上的 allowedFractionalUnits 上做错了什么?

    基本上我想要的是获取仅以小时表示的时间间隔的值 而不将其四舍五入为完整小时 使用NSDateComponentFormatter https developer apple com library ios documentation Fou
  • 使用 Swift(使用 SwiftJWT)和 REST API 连接到 Apple Store Connect - 失败并出现 401

    我正在尝试通过他们的 REST API 连接到 Apple Store Connect 虽然这在几天前有效 但我无法弄清楚为什么它停止工作 现在我无法通过身份验证 即我发出的服务器响应的每个请求都是 401 我是否遗漏了什么 我做什么 生成
  • 一旦 webapp 添加到主屏幕,是否可以强制 iphone/ipod 更新 apple-touch-icon?

    我使用 safari 的所有推荐链接和元标记创建了一个网络应用程序 例如

随机推荐

  • Python 电子邮件正文为空

    我来这里是想请你帮忙 问题是 我的电子邮件主题没问题 但当我打开电子邮件时 它是空的 我真的不明白为什么 这是我的代码 from urllib2 import urlopen import smtplib s smtplib SMTP sm
  • 禁用 JavaScript 时 SSR 不起作用

    在这里参考这张票 https github com zeit next js issues 4210 https github com zeit next js issues 4210我目前想知道为什么当您禁用 javascript 时 使
  • 有 C++ 的样式检查器吗?

    我已经使用java有一段时间了 我发现格子风格 http checkstyle sourceforge net 非常有用 我开始使用 c 我想知道是否有具有类似功能的样式检查器 我主要寻找编写定制支票的能力 关于什么Vera http ww
  • cartopy中shapefile的匹配投影

    我正在尝试使用 matplotlib 和 cartopy 制作 Choropleth 地图 显然我需要首先绘制 shapefile 然而 尽管有人提出了类似的问题 但我没能做到这一点here https stackoverflow com
  • 反引号无法在 shell 脚本中运行 mysql 查询

    您好 我正在尝试从 shell 脚本运行 MySQL 查询 mysql u root p 1234 e CREATE TABLE DB aa vv cc id int 10 unsigned NOT NULL AUTO INCREMENT
  • Json压缩传输

    我想知道基于 javascript 的 json 压缩的当前状态是什么 当前是否有任何库允许通过用单个字符替换长名称或其他方法来压缩 json 有人有用 Javascript 实现 HPPack https github com WebRe
  • Files.newDirectoryStream 与 Files.list

    我知道文件 列表 路径 http docs oracle com javase 8 docs api java nio file Files html list java nio file Path uses 文件 newDirectory
  • 使用适用于 Android 的 XSL-FO 生成 PDF

    是否可以使用 XSL FO 在 Android 应用程序中生成 PDF 下载 Apache FOP 并查看 Android 运行时中是否包含所需的依赖项 可能会比较慢 您可以使用 iText 或 PDFBox 来呈现 PDF 或者使用服务器
  • Cloudwatch Insights 在多行日志中搜索

    日志示例 REQUEST ID 123 Video id 444 REQUEST ID 123 Request error REQUEST ID 534 Video id 555 REQUEST ID 534 Request ok 问题 如
  • tensorflow2.1 InvalidArgumentError:断言失败:[0] [Op:Assert]名称:EagerVariableNameReuse

    我训练了自定义模型并使用了 TensorFlow 2 1 当我运行代码时 我收到以下错误 InvalidArgumentError 断言失败 0 Op Assert 名称 EagerVariableNameReuse 这是显示错误的行 se
  • HammerJS 滑动与 Mat-Tabs 阻止垂直滚动

    所以我的 Angular 应用程序中有一个组件 其中包含数据类别的选项卡以及选项卡内容的值数组 我想使用 HammerJS 在选项卡之间滑动以获得更原生的体验 我还安装了这个虚拟滚动包 https github com rintoj ang
  • 网站管理员 API - 配额限制

    我们正在尝试通过调用使用 Webmasters API NET 客户端库下载网站的页面数据WebmastersService SearchAnalytics Query 为此 我们正在使用Batching https developers
  • 通过匹配其他数组来更改对象属性的位置

    我有一个对象 var data D 1 AA Changes xml This is a string D 2 Compare AA Changes xml This is a string 我需要将该属性与我拥有的另一个数组相匹配 如下所
  • Flutter Video Player On Click 传递 URL 动态并加载视频进行播放

    下面附有视频播放器的示例屏幕 https i stack imgur com PoeyX png如何使视频播放器动态播放 同时通过传递视频 URL 来单击列表播放视频 单击时我已经传递了 URL 并尝试重新初始化并开始播放它不起作用 状态没
  • VHDL - 为什么直接在函数上使用长度属性会产生警告?

    我有一个 VHDL 函数 它返回记录的 std logic vector 表示形式 并且我想要该 std logic vector 的长度 我可以直接在函数上使用长度属性 为什么这会在 ModelSim 中产生警告 我是否会引发一些微妙的问
  • 为什么“www.example.com”与“example.com”不同?

    我有一个网站 如果我登录这种格式的域http example com http example com然后将我的地址更改为http www example com http www example com 我发现我的帐户没有登录 如果我将地
  • Android + ListView背景在滚动时设置背景?

    我有一个通过 ArrayAdapter 填充的 ListView 在适配器中 我根据条件设置视图背景颜色 它有效 但是在滚动时其余行采用这种颜色 这是一些代码 class DateAdapter extends ArrayAdapter
  • 使用 python 连接到 Flask websocket

    我想做的事情可能是不可能的 但事情就这样了 我已经使用 Flask 一段时间了 并使用 Flask socketio 创建了几个测试 允许用户在通过 Web 浏览器访问页面时立即进行通信 然而 我想知道当使用套接字模块从 Python 本身
  • 如何在 iPhone 上的 UITableView 中设置单元格的背景颜色?

    如何设置 UITableView 中单元格的背景颜色 Thanks 我知道这是一篇旧帖子 但我确信有些人仍在寻求帮助 您可以使用它来设置单个单元格的背景颜色 该颜色首先起作用 UITableViewCell tableView UITabl
  • 在 Swift 2.0 中更改 AVAudioPlayer 的速率变量时声音失真

    我正在开发一个简单的音频播放应用程序 它大约有 10 个音频文件 每个文件的正常播放速度为每分钟 100 节拍 用户可以输入一个节奏变量 70 到 140 b p m 之间 该变量在调用 play 函数之前被分配给 tempo 100 AV