2025-10-05 11:23:33 +08:00

3.2 KiB
Raw Permalink Blame History

音频格式转换工具文档

概述

该模块提供了一个简单的音频处理函数,用于将任意 .wav 音频文件转换为 16kHz 采样率、单声道Mono 的标准格式。此格式常用于语音识别、语音合成等语音处理任务中,以确保输入音频满足模型要求。

使用了 pydub 库进行音频操作,依赖于 ffmpeglibav 作为后端处理引擎。


依赖库

  • pydub
  • ffmpeg(需系统安装)

安装方法

pip install pydub

请确保系统中已安装 ffmpeg

  • macOS: brew install ffmpeg
  • Ubuntu/Debian: sudo apt-get install ffmpeg
  • Windows: 下载并添加 ffmpeg 到系统环境变量,或通过 https://ffmpeg.org 安装

函数说明

convert_to_16k_mono(in_wav_path: str, out_wav_path: str) -> None

将指定路径的 WAV 音频文件转换为 16kHz 采样率、单声道格式,并保存到输出路径。

参数

参数名 类型 说明
in_wav_path str 输入音频文件路径(必须是 WAV 格式)
out_wav_path str 输出音频文件保存路径

功能

  1. 使用 AudioSegment.from_wav() 加载输入音频。
  2. 将音频采样率设置为 16000 Hz。
  3. 将声道数设置为 1单声道
  4. 导出处理后的音频为 WAV 格式至指定路径。

示例用法

convert_to_16k_mono("input.wav", "output_16k_mono.wav")

注意事项

  • 输入文件必须是有效的 .wav 文件。
  • 输出目录需存在,否则会抛出异常。
  • 若输出文件已存在,将被覆盖。

典型应用场景

  • 为 ASR自动语音识别系统准备标准化输入音频。
  • 统一不同来源音频的格式以便批量处理。
  • 减少音频数据大小(降低采样率和声道数)。

完整示例代码

from pydub import AudioSegment

def convert_to_16k_mono(in_wav_path, out_wav_path):
    """
    将WAV音频转换为16kHz、单声道格式
    
    参数:
        in_wav_path (str): 输入音频路径
        out_wav_path (str): 输出音频路径
    """
    audio = AudioSegment.from_wav(in_wav_path)
    audio = audio.set_frame_rate(16000).set_channels(1)
    audio.export(out_wav_path, format="wav")

# 使用示例
# convert_to_16k_mono("input.wav", "output_16k_mono.wav")

错误处理建议(扩展功能)

虽然当前版本未包含异常处理,但在生产环境中建议添加如下改进:

import os
from pydub import AudioSegment

def convert_to_16k_mono(in_wav_path, out_wav_path):
    if not os.path.exists(in_wav_path):
        raise FileNotFoundError(f"输入文件不存在: {in_wav_path}")
    
    try:
        audio = AudioSegment.from_wav(in_wav_path)
        audio = audio.set_frame_rate(16000).set_channels(1)
        audio.export(out_wav_path, format="wav")
    except Exception as e:
        raise RuntimeError(f"音频转换失败: {e}")

许可与版权

本代码为开源示例,遵循 MIT 风格许可,可用于学习、研究及商业项目(请根据实际依赖库的许可证合规使用)。