一个 DSP 可以结合两个 48khz 的音频流来创建一个 96khz 的输出吗

Posted

技术标签:

【中文标题】一个 DSP 可以结合两个 48khz 的音频流来创建一个 96khz 的输出吗【英文标题】:can a DSP combine two 48khz audio streams to create a 96khz output 【发布时间】:2016-08-13 13:54:23 【问题描述】:

蓝牙等无线连接受到传输带宽的限制,导致比特率和音频采样频率受限。

是否可以通过组合两个单独的 24 位/48 khz 音频流来创建像 24 位/96 khz 的高清音频输出,从源传输到接收器扬声器/耳机。

我试图了解 DSP(数字信号处理器)的工作原理,但我找不到确切的技术术语来解释这种用于提高音频分辨率的音频拆分和重组技术

【问题讨论】:

【参考方案1】:

不,您必须将两个原始音频流上采样到 96 kHz。合并两个音频流不会增加音频分辨率;您真正要做的就是将两个流相加。

您可能想阅读此free DSP resource 以了解更多信息。

【讨论】:

【参考方案2】:

这是一个简单的结构,可用于从更高分辨率的 24bit/96kHz 流创建两个 24bit/48kHz 的音频流,之后可以重新组合以重新创建一个 24bit/96kHz 的音频流。

从 24bit/96kHz x[0],x[1],x[2],... 的初始高分辨率源开始:

    获取源的每个偶数样本(即 x[0],x[2],x[4],... ),并通过您的第一个 24 位/48kHz 通道发送它(即产生流 y1 使得 y1[0]=x[0], y1[1]=x[2], ...)。 同时,获取源的每个奇数样本 x[1],x[3],x[5],...,并将其发送到您的第二个 24 位/48kHz 通道(即生成流 y2 使得 y2[0]=x[1], y2[1]=x[3], ...)。

在接收端,您应该能够通过交错来自第一和第二通道的样本来重建原始的 24 位/96kHz 音频信号。换句话说,您将使用以下命令重新创建输出流out

out[0] = y1[0]; // ==x[0]
out[1] = y2[0]; // ==x[1]
out[2] = y1[1]; // ==x[2]
out[3] = y2[1]; // ==x[3]
out[4] = y1[2]; // ==x[4]
out[5] = y2[2]; // ==x[5]
...

也就是说,传输这两个 24bit/48kHz 流需要2*24bit*48000kHz = 2304kbps 的有效带宽,这与传输一个 24bit/96kHz 流完全相同。因此,虽然这允许您将音频流放入固定带宽的通道中,但您并没有通过这种方式降低总带宽需求。

【讨论】:

【参考方案3】:

能否请您提供“组合”的定义。根据数据速率,您似乎想要进行多路复用(将两个单声道通道组合成一个立体声通道)。如果希望将两个通道“添加”在一起(两个单声道到一个单声道或两个立体声通道到一个立体声),那么您不应该增加采样率(您正在添加两个频带限制信号,增加采样率没有必要)。

【讨论】:

以上是关于一个 DSP 可以结合两个 48khz 的音频流来创建一个 96khz 的输出吗的主要内容,如果未能解决你的问题,请参考以下文章

在 python 中将 Goertzel 算法扩展到 24 kHz、32 kHz 和 48 kHz

基于ffmpeg的音频转码

如何使用 Microsoft Media Foundation 将原始 48khz/32 位 PCM 编码为 FLAC?

如何使用 ffmpeg 提取 8khz 的音频

音频兼容方案

如何重新采样音频?