ClearerVoice-Studio: 一站式语音增强、语音降噪、语音分离与说话人提取解决方案教程
语音增强 语音降噪 语音分离 目标说话人提取 AI音频处理 clearvoice MossFormer2_SE MossFormerGAN_SE MossFormer2_SS AV_MossFormer2_TSE
· 5 min read
简介
ClearerVoice-Studio 是一个统一的推理平台,专注于语音增强(Speech Enhancement)、语音分离(Speech Separation)和音视频目标说话人提取(Audio-Visual Target Speaker Extraction)。本文将详细介绍如何使用这个强大的工具来处理各种语音任务。
支持的预训练模型
目前平台提供以下预训练模型:
语音增强 (16kHz & 48kHz)
- MossFormer2_SE_48K
- FRCRN_SE_16K
- MossFormerGAN_SE_16K
语音分离 (16kHz)
- MossFormer2_SS_16K
音视频目标说话人提取 (16kHz)
- AV_MossFormer2_TSE_16K
所有模型都托管在HuggingFace上,使用时会自动下载,无需手动操作。
环境配置
1. 克隆项目
git clone https://github.com/modelscope/ClearerVoice-Studio.git
2. 创建conda环境
cd ClearerVoice-Studio
conda create -n ClearerVoice-Studio python=3.8
conda activate ClearerVoice-Studio
pip install -r requirements.txt
使用教程
1. 语音增强示例
from clearvoice import ClearVoice
import os
# 初始化语音增强模型
cv_se = ClearVoice(
task='speech_enhancement',
model_names=['MossFormer2_SE_48K']
)
# 处理单个音频文件
input_path = 'samples/noisy.wav'
output_wav = cv_se(
input_path=input_path,
online_write=False
)
# 保存增强后的音频
output_dir = 'samples/enhanced'
os.makedirs(output_dir, exist_ok=True)
output_path = os.path.join(output_dir, 'enhanced.wav')
cv_se.write(output_wav, output_path=output_path)
2. 语音分离示例
# 初始化语音分离模型
cv_ss = ClearVoice(
task='speech_separation',
model_names=['MossFormer2_SS_16K']
)
# 处理混合语音文件
input_path = 'samples/mixed.wav'
output_dir = 'samples/separated'
os.makedirs(output_dir, exist_ok=True)
# 分离语音并自动保存
cv_ss(
input_path=input_path,
online_write=True,
output_path=output_dir
)
# 分离后会生成多个文件:
# - output_MossFormer2_SS_16K_spk1.wav
# - output_MossFormer2_SS_16K_spk2.wav
3. 目标说话人提取示例
# 初始化目标说话人提取模型
cv_tse = ClearVoice(
task='target_speaker_extraction',
model_names=['AV_MossFormer2_TSE_16K']
)
# 处理视频文件
input_path = 'samples/video.mp4'
output_dir = 'samples/extracted'
os.makedirs(output_dir, exist_ok=True)
# 提取目标说话人语音
cv_tse(
input_path=input_path,
online_write=True,
output_path=output_dir
)
# 会生成以下文件:
# - extracted_speech.wav (目标说话人的语音)
# - background.wav (背景音频)
批量处理示例
def process_directory(input_dir, output_dir, task='speech_enhancement'):
# 初始化模型
cv = ClearVoice(
task=task,
model_names=['MossFormer2_SE_48K'] if task == 'speech_enhancement' else
['MossFormer2_SS_16K'] if task == 'speech_separation' else
['AV_MossFormer2_TSE_16K']
)
# 确保输出目录存在
os.makedirs(output_dir, exist_ok=True)
# 获取所有音频文件
audio_files = [f for f in os.listdir(input_dir) if f.endswith(('.wav', '.mp4', '.avi'))]
# 批量处理
for audio_file in audio_files:
input_path = os.path.join(input_dir, audio_file)
cv(
input_path=input_path,
online_write=True,
output_path=output_dir
)
print(f"Processed: {audio_file}")
# 使用示例
process_directory(
input_dir='samples/input',
output_dir='samples/output',
task='speech_enhancement'
)
高级用法:处理进度监控
import tqdm
def process_with_progress(input_files, task='speech_enhancement'):
cv = ClearVoice(task=task)
for file in tqdm.tqdm(input_files, desc=f"Processing {task}"):
try:
cv(
input_path=file,
online_write=True,
output_path='samples/output'
)
except Exception as e:
print(f"Error processing {file}: {str(e)}")
continue
参数说明
task
: 选择处理任务speech_enhancement
: 语音增强speech_separation
: 语音分离target_speaker_extraction
: 目标说话人提取
model_names
: 模型名称列表,可选择一个或多个模型input_path
: 输入路径,支持单个文件、目录或列表文件(.scp)online_write
: 是否在处理过程中直接保存结果output_path
: 输出路径,可以是文件或目录
性能评估
VoiceBank+DEMAND测试集(16kHz)性能对比
模型 | PESQ | STOI | SSNR | P808_MOS |
---|---|---|---|---|
原始噪声音频 | 1.97 | 0.92 | 6.13 | 3.05 |
FRCRN_SE_16K | 3.23 | 0.95 | 7.60 | 3.59 |
MossFormerGAN_SE_16K | 3.47 | 0.96 | 9.09 | 3.57 |
MossFormer2_SE_48K | 3.16 | 0.95 | 6.86 | 3.53 |
DNS-Challenge-2020测试集性能对比
模型 | PESQ | STOI | SSNR | P808_MOS |
---|---|---|---|---|
原始噪声音频 | 1.58 | 0.91 | 9.35 | 3.15 |
FRCRN_SE_16K | 3.24 | 0.98 | 7.60 | 4.03 |
MossFormerGAN_SE_16K | 3.57 | 0.98 | 14.03 | 4.05 |
MossFormer2_SE_48K | 2.94 | 0.97 | 11.86 | 3.92 |
最佳实践建议
-
选择合适的模型:
- 对于48kHz高保真音频,优先使用MossFormer2_SE_48K
- 对于16kHz音频,可以根据场景选择:
- 通用场景:使用MossFormerGAN_SE_16K或MossFormer2_SE_16K
-
批量处理优化:
- 处理大量音频文件时,建议使用
online_write=True
- 使用.scp列表文件管理批量处理任务
- 处理大量音频文件时,建议使用
-
性能考虑:
- 根据实际需求平衡音质和处理速度
- 考虑硬件资源选择合适的批处理大小
总结
ClearerVoice-Studio为音频处理提供了一个强大而易用的解决方案。通过本教程的学习,你应该能够掌握其基本使用方法,并能够根据实际需求选择合适的模型和处理方式。随着项目的不断更新,我们期待看到更多优秀的预训练模型和功能特性的加入。