逻辑分析仪dump音频实锤排查问题

对于音频开发来说,dump 的功能往往比日志更加有用,我们在开发的时候经常有遇到在 A 模块的时候音频是好的,但是发送到 B 模块之后,音频就存在问题,如果只从日志分析,B 模块的开发会说日志上没有问题,是不是你发送的音频就有问题的,那 A 模块就需要 dump 发送的音频是否有问题。

除此之外,我们还需要dump 发送过程中的音频是否有问题。

这篇文章讲的就是使用逻辑分析仪 dump I2S 上的音频数据。

首先要把 I2S 的 LRCK BCLK SDO SDI 接到逻辑分析仪上

在抓取到音频之后导出数据

导出的数据其实是一个 Exce 表格形式的数据格式

到这一步之后就需要脚本把里面的数据转换成音频文件

第 3 列是 16 进制补码的形式保存的音频 ADC 值,我们需要解析每个点的数据,然后保存成文件的格式,并且从原始数据里面可以看到保存的数据里面标明了左右声道的 ch。

转换的脚本如下

go 复制代码
'''
i2s csv to wav
将逻辑分析仪导出的 I2S 音频数据(CSV 格式)转换为标准 WAV 音频文件

使用方法: python audio_python.py input.csv output.wav

数据流: 逻辑分析仪抓取 I2S 总线 -> 导出 CSV -> 本脚本转换 -> WAV 文件
'''

import sys
import numpy as np
from scipy.io import wavfile


# 校验命令行参数:需要输入 CSV 路径和输出 WAV 路径
if len(sys.argv) != 3:
    print('Usage: python {} csv wav'.format(sys.argv[0]))
    sys.exit(1)


csv = sys.argv[1]  # 逻辑分析仪导出的 CSV 文件
wav = sys.argv[2]  # 输出的 WAV 文件


def conv(s):
    """将十六进制字符串转换为 16-bit 有符号整数(补码处理)
    例如: 0x7FFF -> 32767, 0x8000 -> -32768, 0xFFFF -> -1
    """
    x = int(s, 16)
    return x if x < 0x8000 else x - 0x10000


# 读取 CSV 文件,只取第 3 列(索引 2)的 I2S 音频采样数据
# 逻辑分析仪 CSV 格式通常为: 时间戳, 通道标识, 数据(hex), ...
data = np.genfromtxt(
    csv,
    usecols=(2,),       # 第 3 列:音频数据
    delimiter=',',       # 逗号分隔
    skip_header=1,       # 跳过表头
    converters={2: conv} # 用 conv 函数将 hex 转为有符号整数
)

# I2S 双声道数据交替排列: L, R, L, R, ...
# 将一维数组重塑为 (N, 2) 的立体声帧数组
size = int(len(data) // 2)  # 完整的立体声采样帧数
print('size=%d'%(size))
data = data[:size*2]         # 截断为偶数个,确保左右声道配对
stereo = data.reshape((size, 2))  # 重塑为 [左声道, 右声道] 的二维数组

# 以 48kHz 采样率写入 16-bit 立体声 WAV 文件
# 注意:如果实际 I2S 采样率不同(如 44.1kHz、16kHz),需修改 fs
fs = 48000
wavfile.write(wav, fs, stereo.astype('int16'))

保存的音频打开如下

相关推荐
DogDaoDao6 小时前
Android 硬件编码器参数完全指南:MediaCodec 深度解析
android·音视频·视频编解码·h264·硬编码·视频直播·mediacodec
音视频牛哥8 小时前
大牛直播SDK(SmartMediaKit)Windows平台RTSP/RTMP直播播放SDK集成说明(C#版)
音视频·低延迟rtsp播放器·windows rtsp播放器·windows rtmp播放器·低延迟rtmp播放器·c# rtsp播放器·c# rtmp播放器
薛定猫AI10 小时前
【深度解析】Gemini Omni 多模态生成与 Agent 化创作工作流:从视频编辑到 UI 生成的技术演进
人工智能·ui·音视频
音视频牛哥18 小时前
大牛直播SDK(SmartMediaKit)Windows平台RTSP/RTMP直播播放SDK集成说明(C++版)
windows·音视频·实时音视频·windows rtsp播放器·windows rtmp播放器·超低延迟rtsp播放器·超低延迟rtmp播放器
EasyGBS20 小时前
1分钟讲清楚选EasyNVR还是国标GB28181视频平台EasyGBS:路线不同,别选错
音视频
日光明媚21 小时前
深度解析 SGLang 框架 Wan2.1 视频生成加速技术:从 49 分钟到 1 分钟的极致优化
人工智能·计算机视觉·aigc·音视频·sglang
小猿君21 小时前
谷歌I/O前夜Veo 4遭泄露,AI视频底层逻辑浮出水面
人工智能·音视频
南山有乔木78921 小时前
音频怎么转换MP3格式?M4A、WAV、FLAC转mp3实测有效的格式转换方法
音视频
不昀21 小时前
音频变压器Bourns SM-LP-5001国产替代选型指南
网络·音视频·以太网·网络通信·电子元器件
REDcker21 小时前
RGB与YUV像素格式详解
音视频·实时音视频·视频编解码·yuv·rgb