ONNX 模型库
返回模型

说明文档

Whisper-base 语音活动检测 (VAD) 用于日语 ASMR - ONNX

模型描述

这是一个改进的基于 Whisper 的语音活动检测 (VAD) 模型,利用预训练的 Whisper encoder 配合轻量级非自回归 decoder 来实现高精度的语音活动检测。虽然该模型在日语 ASMR 内容上进行了微调以优化轻声细语和耳语的检测性能,但模型保留了 Whisper 强大的多语言基础,能够在多种语言和声学条件下有效检测语音。该模型已优化并导出为 ONNX 格式,以便在不同平台上高效推理。完整的训练代码、配置和 ONNX 导出工具,请参见 GitHub 仓库:TransWithAI/whisper-vad

这项工作基于最近的研究,展示了 Whisper 的语音表示对 VAD 任务的正向迁移,如 WhisperSeg 及相关工作所示。

主要特性

  • 架构:基于 whisper-base 的 Encoder-Decoder 模型
  • 帧分辨率:每帧 20ms,实现精确的时间检测
  • 输入时长:处理 30 秒音频块
  • 输出:帧级别的语音/非语音预测
  • 优化:ONNX 格式,支持跨平台部署
  • 实时能力:快速非自回归推理

模型架构详情

  • 基础模型:OpenAI whisper-base encoder(训练时冻结)
  • Decoder:2 层 transformer decoder,8 个注意力头
  • 处理流程
    • 输入:30 秒音频块(16kHz 采样率下 480,000 个采样点)
    • 特征:80 通道 log-mel 频谱图
    • 输出:1500 帧预测(每帧 20ms)

性能

  • 帧时长:每帧 20ms,实现精确的时间检测
  • 处理速度:CPU 上约 100 倍实时(单样本处理)
  • 批处理:由于 ONNX 导出限制,目前仅支持批大小为 1,但单样本推理速度极快
  • 专项训练:日语 ASMR 和耳语语音
  • 泛化能力:尽管在日语 ASMR 上微调,模型继承了 Whisper 强大的多语言能力,可以有效检测多种语言和声学环境中的语音

相比原生 Whisper VAD 的优势

  • 无幻觉:判别式模型不会生成虚假文本
  • 更快:单次前向传播,非自回归推理
  • 更高精度:20ms 帧级时间分辨率 vs Whisper 的 30 秒块
  • 鲁棒性:Focal loss 训练有效处理语音/静音不平衡
  • 轻量级:Decoder 在基础 Whisper encoder 上仅增加极少参数

使用方法

使用 ONNX Runtime 快速开始

import numpy as np
import onnxruntime as ort
from transformers import WhisperFeatureExtractor
import librosa

# Load model
session = ort.InferenceSession("model.onnx")
feature_extractor = WhisperFeatureExtractor.from_pretrained("openai/whisper-base")

# Load and preprocess audio
audio, sr = librosa.load("audio.wav", sr=16000)
audio_chunk = audio[:480000]  # 30 seconds

# Extract features
inputs = feature_extractor(
    audio_chunk,
    sampling_rate=16000,
    return_tensors="np"
)

# Run inference
outputs = session.run(None, {session.get_inputs()[0].name: inputs.input_features})
predictions = outputs[0]  # Shape: [1, 1500] - 1500 frames of 20ms each

# Apply threshold
speech_frames = predictions[0] > 0.5

使用提供的推理脚本

模型仓库包含一个功能全面的 inference.py 脚本:

from inference import WhisperVADInference

# Initialize model
vad = WhisperVADInference(
    model_path="model.onnx",
    threshold=0.5,           # Speech detection threshold
    min_speech_duration=0.25,  # Minimum speech segment duration
    min_silence_duration=0.1   # Minimum silence between segments
)

# Process audio file
segments = vad.process_audio("audio.wav")

# Segments format: List of (start_time, end_time) tuples
for start, end in segments:
    print(f"Speech detected: {start:.2f}s - {end:.2f}s")

流式/实时处理

# Process audio stream in chunks
vad = WhisperVADInference("model.onnx", streaming=True)

for audio_chunk in audio_stream:
    speech_active = vad.process_chunk(audio_chunk)
    if speech_active:
        # Handle speech detection
        pass

输入/输出规格

输入

  • 音频格式:16kHz 单声道音频
  • 块大小:30 秒(480,000 个采样点)
  • 特征类型:80 通道 log-mel 频谱图
  • 形状[1, 80, 3000](批大小固定为 1 - 见下方说明)

输出

  • 类型:帧级概率
  • 形状[1, 1500](批大小固定为 1)
  • 帧时长:每帧 20ms
  • 范围:[0, 1] 语音存在概率

关于批处理的说明:目前,由于 PyTorch transformers 和 ONNX 之间的导出限制,ONNX 模型仅支持批大小为 1。但是,单样本推理经过高度优化,运行速度极快(CPU 上约 100 倍实时),对于大多数用例,顺序处理仍然非常高效。

训练详情

训练配置

  • 数据集:约 500 小时日语 ASMR 音频录音,带有准确的语音时间戳
  • 损失函数:Focal Loss (α=0.25, γ=2.0) 用于处理类别不平衡
  • 优化器:AdamW,学习率 1.5e-3
  • 批大小:128
  • 训练时长:5 个 epoch
  • 硬件:单 GPU 训练,使用混合精度 (bf16)

数据处理

  • 音频分割为 30 秒的块
  • 从词级时间戳生成帧级标签
  • 数据增强:无(依赖 Whisper 预训练的鲁棒性)

限制与注意事项

  1. 固定时长:模型期望 30 秒的块;较短的音频需要填充
  2. 训练专精:虽然由于 Whisper 强大的多语言基础,模型在各种语言和环境下表现良好,但它在以下方面特别出色:
    • 日语 ASMR 内容(主要训练数据)
    • 耳语和轻声细语检测
    • 安静、亲密的音频环境
  3. 泛化能力:模型可以有效处理多种语言和正常音量语音,尽管在类似于训练数据的内容上性能可能略好
  4. 背景噪声:在非常嘈杂的条件下性能可能下降
  5. 音乐/歌唱:主要在语音上训练;对歌唱的表现可能不稳定

模型文件

  • model.onnx:ONNX 模型文件
  • model_metadata.json:模型配置和参数
  • inference.py:即用型推理脚本,带后处理功能
  • requirements.txt:Python 依赖

安装

pip install onnxruntime  # or onnxruntime-gpu for GPU support
pip install librosa transformers numpy

应用场景

  • ASMR 内容处理:检测 ASMR 录音中的耳语和细微发声
  • 日语音频处理:针对日语内容优化,特别是轻声细语
  • 转录预处理:在 ASR 之前过滤静音,对耳语内容特别有效
  • 音频索引:识别长录音中的语音片段
  • 实时通信:检测通话/会议中的活跃语音
  • 音频分析:ASMR 和冥想内容的语音/静音比例分析
  • 字幕对齐:为字幕提供准确的时间,包括耳语对话

引用

如果您使用此模型,请引用:

@misc{whisper-vad,
  title={Whisper-VAD: Whisper-based Voice Activity Detection},
  author={Grider},
  year={2025},
  publisher={Hugging Face},
  howpublished={\url{https://huggingface.co/TransWithAI/Whisper-Vad-EncDec-ASMR-onnx}}
}

参考文献

许可证

MIT License

致谢

本模型基于 OpenAI 的 Whisper 模型构建,并实现了架构改进以实现高效的语音活动检测。

TransWithAI/Whisper-Vad-EncDec-ASMR-onnx

作者 TransWithAI

audio-classification transformers
↓ 0 ♥ 6

创建时间: 2025-11-06 19:19:22+00:00

更新时间: 2025-11-17 05:40:46+00:00

在 Hugging Face 上查看

文件 (6)

.gitattributes
README.md
inference.py
model.onnx ONNX
model_metadata.json
requirements.txt