Whisper 音频要求:支持格式与规格完整指南

Whisper 音频要求:支持格式与规格完整指南

Eric King

Eric King

Author


理解 Whisper 的音频要求对获得最佳转写准确度至关重要。Whisper 很灵活,能处理多种音频格式;遵循最佳规格可发挥其全部性能。
本指南涵盖所有音频要求、支持格式、技术规格,以及为 Whisper 转写准备音频文件的最佳实践。

支持的音频格式

Whisper 通过 FFmpeg 支持广泛的音频与视频格式。完整列表如下:

音频格式

格式扩展名说明
WAV.wav✅ 首选,无损
MP3.mp3✅ 最常见
FLAC.flac✅ 无损,压缩效果好
M4A.m4a✅ Apple 格式,AAC 编解码器
AAC.aac✅ 高压缩质量
OGG.ogg✅ 开源格式
OPUS.opus✅ 低延迟,适合网络
WMA.wma⚠️ 较少见
AMR.amr⚠️ 音质较低,电话录音

视频格式(提取音频)

格式扩展名说明
MP4.mp4✅ 最常见视频格式
AVI.avi✅ 较旧但仍支持
MKV.mkv✅ 容器格式
MOV.mov✅ QuickTime
WebM.webm✅ 网络视频
FLV.flv⚠️ 旧版 Flash
重要: Whisper 会自动从视频文件中提取音频,因此可以直接上传视频。

采样率要求

最佳采样率:16 kHz

Whisper 在处理前会将所有音频内部重采样为 16 kHz 单声道。这是语音识别的最佳采样率。

支持的采样率

Whisper 接受任意采样率,但请注意:
输入采样率Whisper 处理建议
8 kHz重采样至 16 kHz✅ 电话通话,可接受
16 kHz直接使用最佳,无需重采样
22.05 kHz重采样至 16 kHz✅ 质量良好
44.1 kHz重采样至 16 kHz✅ CD 质量,可以
48 kHz重采样至 16 kHz✅ 专业音频,可以
96 kHz重采样至 16 kHz⚠️ 不必要,文件更大
要点: 更高的采样率不会提高 Whisper 的准确度。模型在 16 kHz 音频上训练;提供 16 kHz 输入可避免不必要的重采样和更大文件。

最佳实践

# Convert audio to 16 kHz before processing (optional optimization)
import ffmpeg

def convert_to_16khz(input_file, output_file):
    stream = ffmpeg.input(input_file)
    stream = ffmpeg.output(
        stream,
        output_file,
        acodec='pcm_s16le',
        ac=1,  # Mono
        ar=16000  # 16 kHz
    )
    ffmpeg.run(stream, overwrite_output=True)

位深度要求

支持的位深度

位深度状态说明
8 位✅ 支持质量较低,不推荐
16 位推荐标准,足够
24 位✅ 支持专业用途,文件更大
32 位浮点✅ 支持录音室级,多数情况过剩
建议: 16 位 PCM 是标准,对语音识别质量已很充足。更高位深度不会提高转写准确度。

声道配置:单声道与立体声

单声道(推荐)

Whisper 在内部以单声道处理音频,因此单声道输入最优。
优点:
  • 文件更小
  • 处理更快
  • 无需混音
  • 适合单人内容
适合单声道的场景:
  • 单人录音
  • 电话
  • 单人主持播客
  • 大多数转写任务

立体声(支持)

立体声文件会自动转为单声道(取平均或选一轨)。
立体声有用的情况:
  • 不同说话人在不同声道(少见)
  • 原始为立体声(自动转换)
最佳实践: 若可控,处理前将立体声转为单声道:
import ffmpeg

# Convert stereo to mono
stream = ffmpeg.input('stereo_audio.wav')
stream = ffmpeg.output(
    stream,
    'mono_audio.wav',
    ac=1  # Mono channel
)
ffmpeg.run(stream, overwrite_output=True)

文件大小限制

实际限制

Whisper 没有严格的文件大小上限,但实际中需考虑:
文件大小处理时间建议
< 10 MB秒级✅ 理想
10–100 MB分钟级✅ 良好
100–500 MB10–30 分钟⚠️ 考虑分块
> 500 MB30 分钟以上⚠️ 必须分块

内存

大文件需要更多 RAM/显存:
  • base 模型: 约 1–2 GB VRAM
  • small 模型: 约 2–3 GB VRAM
  • medium 模型: 约 5–6 GB VRAM
  • large 模型: 约 10–12 GB VRAM
最佳实践: 文件超过 100 MB 时应分块(见下文)。

时长限制

建议时长

时长状态说明
< 30 分钟✅ 最佳直接处理
30–60 分钟✅ 良好可能需要分块
1–2 小时⚠️ 建议分块分块往往更准确
> 2 小时⚠️ 必须分块稳定性所需

为何要分割长音频?

  1. 内存限制: 避免内存不足
  2. 更好准确度: 较短块更易保持上下文
  3. 更快处理: 可并行
  4. 容错: 一块失败时其他块仍可能成功
分块策略:
# Split long audio into 30-60 second chunks with 5-10 second overlap
def chunk_audio(audio_path, chunk_length=60, overlap=5):
    # Implementation: split audio into segments
    # Process each chunk separately
    # Merge results with timestamps
    pass

音质要求

最低标准

为获得可接受的准确度,音频应满足:
因素最低最佳
信噪比> 10 dB> 20 dB
码率(MP3)≥ 64 kbps≥ 128 kbps
音量可听归一化至 −3 dB
背景噪声尽量少
回声/混响尽量少

质量检查清单

转写前请确认:
  • 语音清晰: 说话人清楚可辨
  • 噪声最小: 背景不盖过人声
  • 音量稳定: 无突变
  • 无削波: 无失真或过载
  • 麦克风良好: 录音设备合格

编解码器要求

推荐编解码器

编解码器格式质量建议
PCMWAV无损准确度最佳
FLACFLAC无损✅ 优秀,有压缩
AACM4A、MP4✅ 很好
MP3MP3有损✅ ≥128 kbps 时良好
OGG VorbisOGG有损✅ 质量好
OPUSOPUS有损✅ 好,低延迟

编解码器实践

追求最高准确度:
  • 使用 PCM(WAV)FLAC(无损)
日常使用:
  • 使用 AACMP3 ≥128 kbps(效果很好)
避免:
  • 极低码率 MP3(< 64 kbps)
  • 高度压缩格式
  • 除非必要,避免电话编解码器(AMR、G.711)

预处理建议

转写前

Whisper 会自动处理许多问题;预处理可进一步改善结果:

1. 音量归一化

import numpy as np
from scipy.io import wavfile

def normalize_audio(audio_path, output_path, target_dB=-3.0):
    sr, audio = wavfile.read(audio_path)
    audio = audio.astype(np.float32)
    
    # Normalize to target dB
    max_val = np.max(np.abs(audio))
    target_linear = 10 ** (target_dB / 20)
    audio = audio * (target_linear / max_val)
    
    # Clip to prevent overflow
    audio = np.clip(audio, -1.0, 1.0)
    
    wavfile.write(output_path, sr, (audio * 32767).astype(np.int16))

2. 去除静音

# Remove leading/trailing silence
# Helps with processing time and accuracy

3. 降噪(可选)

噪声较大时:
# Use noise reduction libraries
# librosa, noisereduce, or specialized tools
# Only if background noise is significant

4. 重采样至 16 kHz(可选)

优化文件大小时:
import ffmpeg

stream = ffmpeg.input('input.wav')
stream = ffmpeg.output(
    stream,
    'output_16k.wav',
    ar=16000  # Resample to 16 kHz
)
ffmpeg.run(stream, overwrite_output=True)

常见音频问题与解决

问题 1:采样率很低(8 kHz)

问题: 8 kHz 电话录音可能准确度较低。
解决:
  • 使用 Whisper medium 或 large 模型(对低采样率更友好)
  • 上采样至 16 kHz(不能恢复音质,但有助于处理)

问题 2:立体声上不同说话人

问题: 两人各占一轨。
解决:
# Extract each channel separately
import torchaudio

audio, sr = torchaudio.load('stereo.wav')
speaker1 = audio[0]  # Left channel
speaker2 = audio[1]  # Right channel

# Transcribe each separately
result1 = model.transcribe(speaker1)
result2 = model.transcribe(speaker2)

问题 3:可变码率 MP3

问题: VBR 在某些工具中可能出问题。
解决:
  • 转为固定码率(CBR)或 WAV
  • Whisper 能处理 VBR,但 CBR 更可预期

问题 4:损坏的音频文件

问题: 能播放但 Whisper 失败。
解决:
# Re-encode the file
import ffmpeg

stream = ffmpeg.input('corrupted.mp3')
stream = ffmpeg.output(
    stream,
    'fixed.wav',
    acodec='pcm_s16le'
)
ffmpeg.run(stream, overwrite_output=True)

问题 5:极长音频文件

问题: 内存不足或极慢。
解决:
  • 切成 30–60 秒块
  • 顺序或并行处理
  • 按时间戳合并结果

场景化建议

电话通话

参数原因
采样率8–16 kHz电话音质
格式WAV 或 MP3常见
码率≥ 64 kbps编解码质量
声道单声道通话惯例

会议(Zoom、Teams)

参数原因
采样率16–48 kHz高质
格式MP4(提取音频)视频格式
码率≥ 128 kbps良好质量
声道单声道或立体声视设置而定

播客

参数原因
采样率44.1–48 kHz专业质量
格式MP3、WAV 或 M4A常见
码率≥ 128 kbps良好
声道单声道惯例

采访

参数原因
采样率16–48 kHz高质
格式WAV 或 FLAC最高准确度
码率无损或 ≥ 192 kbps专业
声道单声道惯例

Whisper 音频要求摘要

最低要求

  • 格式: FFmpeg 支持的任意格式
  • 采样率: 任意(建议至少 8 kHz)
  • 位深度: 8 位及以上
  • 声道: 单声道或立体声(偏好单声道)
  • 文件大小: 无硬性上限(>100 MB 应分块)
  • 时长: 无硬性上限(>1 小时应分块)

最佳要求

  • 格式: WAV、FLAC 或 MP3(≥128 kbps)
  • 采样率: 16 kHz(最佳,无需重采样)
  • 位深度: 16 位 PCM
  • 声道: 单声道
  • 音质: 语音清晰、噪声少
  • 预处理: 音量归一化、无削波

快速参考:音频准备清单

使用 Whisper 转写前:
  • 格式: WAV、MP3、FLAC、M4A 或其他支持格式
  • 采样率: 16 kHz(最佳)或其他支持值
  • 位深度: 16 位(推荐)
  • 声道: 单声道(推荐)或立体声
  • 文件大小: < 100 MB(或计划分块)
  • 时长: < 1 小时(或计划分块)
  • 音质: 语音清晰、背景噪声少
  • 音量: 已归一化、无削波
  • 编解码器: 无损(WAV/FLAC)或高质有损(MP3 ≥128 kbps)

测试音频

快速测试

import whisper

# Load model
model = whisper.load_model("base")

# Test transcription
result = model.transcribe("your_audio.wav")

# Check if successful
if result["text"]:
    print("✅ Audio format is compatible")
    print(f"Detected language: {result['language']}")
else:
    print("⚠️ Transcription failed - check audio format")

常见错误信息

错误原因解决
"File not found"路径错误检查路径
"Unsupported format"不支持格式转为 WAV/MP3
"Out of memory"文件过大分块处理
"Empty audio"文件损坏重新编码

最佳实践摘要

  1. 尽量使用 16 kHz 采样率(对 Whisper 最优)
  2. 优先单声道而非立体声(内部按单声道处理)
  3. 使用无损格式(WAV/FLAC)以获得最高准确度
  4. 长文件(>1 小时)应分块以提高准确度与稳定性
  5. 归一化音频至稳定电平
  6. 尽量减少背景噪声
  7. 选择合适模型规模(更大模型对差音质更鲁棒)
  8. 先用 base 模型测试再使用更大模型

结语

Whisper 非常灵活,可处理多种格式与音质;遵循最佳规格可获得最佳转写准确度:
  • 格式: WAV、FLAC 或 MP3(≥128 kbps)
  • 采样率: 16 kHz(最佳)
  • 位深度: 16 位 PCM
  • 声道: 单声道
  • 音质: 语音清晰、噪声少
请记住:清晰的音频比完美的格式参数更重要。即使技术参数理想,录音质量差仍会拉低准确度。应注重清晰语音、低噪声与良好麦克风摆放。
在生产环境中,SayToWords 等平台会自动处理格式转换、重采样与优化,让您专注于录得清楚,而非纠结技术细节。

需要为 Whisper 准备音频的帮助?请参阅我们关于预处理、分块策略与准确度优化的其他指南。

立即免費試用

現在就體驗我們的 AI 語音與音視頻服務!不僅可以享受高精度語音轉文字、多語言翻譯與智能說話人識別,還能自動生成視頻字幕、智能編輯音視頻內容並進行聲畫同步分析,全面覆蓋會議記錄、短視頻創作、播客製作等場景——立即開始免費試用吧!