问题标签 [avaudiofile]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 组合 2 个音频文件是 Swift
我正在尝试合并 2 个音频文件。
主要问题是音频文件是无损.flac文件。
我尝试创建AVMutableComposition
,然后AVURLAsset
为每个音频创建 2 个并用于AVAssetExportSession
组合音频文件并且它可以工作,但在这种情况下的主要问题是AVAssetExportSession
不支持导出到.flac并且支持.m4a,这是有损压缩,不适合我的情况。
谁能建议如何获取.flac音频文件?
swift - 设置 AVAudioFile `framePosition` 会导致崩溃
每当我将 AVAudioFile 设置framePosition
为当前 framePosition 以外的其他内容时,我都会崩溃:
错误 - 6658
我在 Apple Docs 中查找的是:
kExtAudioFileError_InvalidSeek:写入尝试或偏移量超出范围。
这对我来说很奇怪,因为我可以确认我尝试设置的framePosition
位置小于 AVAudioFile'slength
并且高于 0,因此帧不应该超出范围。
代码:
这是崩溃的完整描述:
更新 1:我注意到我可以设置 的 framePosition f
,即为阅读而打开的 AVAudioFile,但我仍然无法设置 的file
framePosition ,为使用相同的 URL 编写打开的 AVAudioFile 。
更新 2:我尝试将文件写入一个单独的 URL,而不是通过替换读取它
和
在if let f = f
街区。
但是,在设置成名位置时,我仍然会出现越界错误。
swift - AVAudio 和离线手动渲染模式 - 无法将更高频率的缓冲区写入输出文件
我正在读取输入文件并使用离线手动渲染模式,我想执行幅度调制并将结果写入输出文件。
为了测试,我产生纯正弦波——这适用于低于 6.000 Hz 的频率。对于更高的频率(我的目标是使用大约 20.000 Hz),信号(因此监听输出文件)会失真,并且频谱在 8.000 Hz 处结束 - 不再有纯频谱,在 0 到 8.000 Hz 之间有多个峰值。
这是我的代码片段:
我的问题:有s.th。我的代码错了吗?或者有谁知道如何生成具有更高频率正弦波的输出文件?
我想手动渲染模式不够快,无法处理更高的频率。
更新:与此同时,我确实用 Audacity 分析了输出文件。上图为 1.000 Hz 的波形,下图为 20.000 Hz 的波形:
奇怪的是,随着频率的升高,幅度趋近于零。此外,我在第二个频谱中看到更多频率。
与结果相关的一个新问题是以下算法的正确性:
我确实检查了采样率,即 48000 - 我知道当采样频率大于被采样信号的最大频率的两倍时,可以忠实地重建原始信号。
更新 2:
我更改了如下设置:
现在输出信号的质量更好,但并不完美。我得到更高的幅度,但在频谱分析仪中总是不止一个频率。也许解决方法可以包括应用高通滤波器?
与此同时,我确实使用了一种 SignalGenerator,将经过处理的缓冲区(使用正弦波)直接传输到扬声器——在这种情况下,输出是完美的。我认为将信号路由到文件会导致此类问题。
ios - 如何以编程方式快速重新采样音频文件?
我想知道是否可以重新采样已经编写的AVAudioFile
.
我发现的所有参考资料都不适用于这个特定问题,因为:
- 他们建议在用户录制时重新采样
AVAudioFile
,而installTap
正在运行。在这种方法AVAudioConverter
中,每个缓冲区块中的工作由 给出,inputNode
并将其附加到AVAudioFile
. [1] [2]
关键是无论录制过程如何,我都想重新采样我的音频文件。
更难的方法是通过 L 因子对信号进行上采样,并使用vDSP以 M 因子应用抽取:
光盘上的音频具有 44.1 kHz 的采样率;要将其传输到使用 48 kHz 的数字媒体,可以使用上述方法 1,L = 160,M = 147(因为 48000/44100 = 160/147)。对于反向转换,交换 L 和 M 的值。如上所述,在这两种情况下,低通滤波器都应设置为 22.05 kHz。[3]
最后一个显然似乎是一种过于硬编码的方法来解决它。我希望有一种方法可以使用AVAudioConverter 对其进行重新采样,但它缺少文档:(
python - 我无法在 rasa 中添加音频剪辑作为聊天机器人的输出
我已经使用 rasa 一个多月了,最近我被困在 rasa 聊天机器人中添加音频剪辑,任何帮助将不胜感激。我正在使用 rasa 2.0 版。我在actions.py中添加了以下代码
类 ActionHelloWorld(动作):
下面是我在 domain.yml 文件中添加的代码
完全录音:
- 自定义:附件:类型:“音频”有效负载:src:“c:\user\lenovo\documents\audio1.mp3”自动播放:true
我不确定这是否是解决问题的正确方法,这个机器人的目的是根据用户的请求播放音频文件。
xamarin - 在 AVAudioPlayer 中获取音频片段的样本?
AVAudioPlayer 类上是否有可以用来获取样本的属性?如果没有,我可以使用其他课程来获取此信息吗?
这是我所拥有的:
Visual Studio Mac (C#/Xamarin)
ios - AVAudioFile 写入不起作用 Swift iOS 14
我有以下功能:
它返回给我一个 AVAudioPCMBuffer。我已经验证了我传入的话语是正确的。
当我尝试将此 AVAudioPCMBuffer 写入本地 URL 时,问题就出现了,如下所示:
我遇到以下错误:CABufferList.h:179:BytesConsumed: ASSERTION FAILURE [(nBytes <= buf->mDataByteSize) != 0 is false]:
在我尝试做的那一行:
try tempFile.write(from: buffer)
ios - 将传入的音频原始数据写入 AVAudioFile 的 AVAudioPCMBuffer 并播放 AVAudioFile
我在具有以下属性的回调函数中接收音频原始数据包:
- 每包 640 个样本
- 32 kHz 采样率
- 带符号的 16 位 PCM 编码
- 单通道
换句话说,每个传入的音频数据包都是一个包含 640 个指向音频原始数据值的指针的数组。每个音频原始数据值的位深度为 2 字节(16 位),采用 PCM 编码。
我在接收传入的音频原始数据之前创建了一个 AVAudioFile。录制开始后,我将音频原始数据包保存到 AVAudioPCMBuffer 中,使用 AVAudioConverter 将 AVAudioPCMBuffer 的处理格式转换为 AVAudioEngine 主混音器节点的输出格式,并将转换后的 AVAudioPCMBuffer 写入 AVAudioFile。由于 AVAudioEngine 的主混音器节点的输出格式为 2 ch, 48000 Hz, Float32, non-interleaved,因此需要进行 AVAudioPCMBuffer 格式的转换。最后,一旦录音停止,我使用 AVAudioEngine 播放 AVAudioFile。
问题:播放 AVAudioFile 时,我对着麦克风说话时只听到白噪声。然而,白噪声的持续时间与我对着麦克风说话的时间长度相同,这似乎表明我已经接近解决方案,但还没有完全解决。
我在 Swift 5 中的代码如下:
1.创建AVAudioFile
2. 在回调函数中处理传入的音频原始数据
3. 录音停止后播放音频文件
我对使用 Swift 在 iOS 上进行音频处理非常陌生,非常感谢有关解决此问题的任何建议或提示。
非常感谢您提前提供的帮助。
avaudioplayer - 如何使用 AVAudioPCMBuffer 寻找逻辑 AVAudioEngine
我有一个从本机库获得的原始音频字节流,为了使它工作,我将它转换为AVAudioPCMBuffer
我可以AVAudioEngine
像这样使用的
但问题是 - 如何进行搜索(例如:+/-10 秒)。我在这里找到了解释
https://www.raywenderlich.com/21672160-avaudioengine-tutorial-for-ios-getting-started
但是给定示例的问题是没有scheduleSegment
使用startingFrame
param for 的方法AVAudioPCMBuffer
。
有没有办法实现搜索逻辑AVAudioPCMBuffer
?
swift - 如何使用 AVFAudio 的 SDK 录制、播放和保存音频
我一直在尝试实现 AVFoundation 的框架 AVFAudio,以便根据用户选择的预设来录制音频、播放音频以及更改音频数据。我也一直在尝试找出如何将文件本地保存到用户的设备,但是,在阅读苹果关于 AVFAudio 的文档后,我几乎无法理解创建这些文件时要采取哪些步骤。我一直在关注https://www.raywenderlich.com/21868250-audio-with-avfoundation/lessons/1 并设法在这里设置了一些功能。
在这里我已经设置了保存音频,但是正如你所看到的,这只会将音频保存到一个临时目录中。我想知道如何将音频文件本地保存到用户的设备。
在使用 AVFAudio 时,我通常对 AVFoundation 的框架感到困惑,并且文档https://developer.apple.com/documentation/avfaudio没有详细说明如何实现每种方法。例如; 该文档指出,对于创建音频播放器:我们需要 init(contentsOf:url),但没有详细说明 url 是什么以及我们为什么使用它?任何人都可以帮助我了解进一步采取哪些步骤,我觉得我在绕圈子试图理解这个框架和苹果文档。