# WORK **Repository Path**: almostgod/work ## Basic Information - **Project Name**: WORK - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-15 - **Last Updated**: 2025-11-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 音频信号采集与可视化项目 ## 项目概述 这是一个基于Qt开发的音频信号采集与可视化应用程序,能够实时采集麦克风或其他音频输入设备的信号,并以折线图或条形图的形式进行可视化展示。该项目支持PCM和ATUIM两种音频处理模式,并允许用户配置采样率、声道数、采样格式等参数,还可以将采集的音频数据保存为WAV格式文件。 ## 功能特点 - **实时音频采集**:支持从多个音频输入设备采集数据 - **双模式数据可视化**: - 折线图:显示音频波形的实时变化 - 条形图:固定显示10个条形,展示音频频率分布 - **多种音频配置选项**: - 可选择采样率(8kHz-48kHz) - 可配置声道数(单声道/立体声) - 可设置采样格式(有符号/无符号整数、浮点数) - 可切换字节序(小端/大端) - **两种音频处理模式**: - PCM模式:原始音频数据处理 - ATUIM模式:增强型数据处理,提高显示效果 - **音频数据保存**:支持将采集的音频保存为标准WAV格式文件 - **实时状态显示**:显示录音时长、数据块大小等信息 ## 技术架构 - **开发框架**:Qt 5.x - **核心模块**: - 音频设备管理 - 数据采集与处理 - 数据可视化(基于Qt Charts) - 文件IO(WAV格式) - **多线程处理**:使用QThread进行音频数据的异步处理,避免UI阻塞 ## 文件结构 ``` ├── mainwindow.cpp # 主窗口实现,包含UI交互和图表显示 ├── mainwindow.h # 主窗口头文件 ├── mainwindow.ui # 主窗口UI设计文件 ├── qmydisplaydevice.cpp # 自定义音频显示设备实现 ├── qmydisplaydevice.h # 自定义音频显示设备头文件 ├── AudioInput.pro # Qt项目文件 └── README.md # 项目说明文档(当前文件) ``` ## 核心功能模块 ### 1. 音频设备管理 - 自动检测并列出系统中所有可用的音频输入设备 - 支持设备热插拔检测 - 提供设备格式兼容性测试功能 ### 2. 音频数据采集 - 使用QIODevice接口实现音频数据的实时采集 - 支持多种音频格式配置 - 采集的数据通过信号槽机制传递给处理模块 ### 3. 数据处理与可视化 - **折线图处理**: - 维护固定数量的数据点历史记录 - 实时更新波形显示 - **条形图处理**: - 固定显示10个条形,每个条形显示一段音频数据的平均值 - 黄绿色渐变填充,无边框设计 - 条形之间有适当间隔,均分图表宽度 ### 4. WAV文件保存 - 支持将采集的原始音频数据保存为WAV格式 - 自动生成正确的WAV文件头信息 - 支持多种音频格式的WAV文件生成 ## 使用说明 ### 基本操作 1. **选择音频设备**:从下拉列表中选择要使用的麦克风或其他音频输入设备 2. **配置音频参数**: - 选择采样率(推荐:44100Hz) - 设置声道数(单声道/立体声) - 选择采样格式(如:有符号16位整数) - 设置字节序(通常选择小端) 3. **选择显示模式**: - 点击工具栏的线图/矩形图按钮切换显示方式 4. **开始录音**:点击工具栏的开始按钮 5. **停止录音**:点击工具栏的停止按钮 6. **保存录音**:点击工具栏的保存按钮,选择保存路径 ### 音频模式说明 - **PCM模式**:标准音频数据处理,显示原始波形 - **ATUIM模式**:增强型数据处理,对于小幅度信号有放大效果,适合弱信号的可视化 ### 可视化说明 - **折线图**:实时显示音频波形,适合观察音频的时域变化 - **条形图**:固定显示10个条形,每个条形代表一段时间内的音频强度平均值,适合观察音频的整体强度变化 ## 开发说明 ### 编译环境 - Qt 5.x 开发环境 - 支持MinGW或MSVC编译器 - 需要Qt Charts模块 ### 构建步骤 1. 使用Qt Creator打开AudioInput.pro文件 2. 选择适当的构建套件(Kit) 3. 编译并运行项目 ### 关键类说明 - **MainWindow**:应用程序主窗口,管理UI和音频配置 - **QmyDisplayDevice**:自定义音频设备类,负责音频数据的接收和处理 - **AudioProcessorThread**:音频处理线程,在后台处理数据并更新图表 ## 注意事项 1. 使用前请确保已正确安装Qt Charts模块 2. 不同的音频设备可能支持不同的采样率和格式组合 3. 长时间录音可能会占用较多内存,请定期保存录音文件 4. ATUIM模式可能会放大噪声,在嘈杂环境下建议使用PCM模式 ## 扩展建议 1. 添加频谱分析功能 2. 实现音频滤镜效果 3. 添加录音编辑功能 4. 支持更多音频格式的导入导出 5. 增加多通道独立显示功能