Home

ClearerVoice-Studio: 一站式语音增强、语音降噪、语音分离与说话人提取解决方案教程

· 5 min read
img of ClearerVoice-Studio: 一站式语音增强、语音降噪、语音分离与说话人提取解决方案教程

简介

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)性能对比

模型PESQSTOISSNRP808_MOS
原始噪声音频1.970.926.133.05
FRCRN_SE_16K3.230.957.603.59
MossFormerGAN_SE_16K3.470.969.093.57
MossFormer2_SE_48K3.160.956.863.53

DNS-Challenge-2020测试集性能对比

模型PESQSTOISSNRP808_MOS
原始噪声音频1.580.919.353.15
FRCRN_SE_16K3.240.987.604.03
MossFormerGAN_SE_16K3.570.9814.034.05
MossFormer2_SE_48K2.940.9711.863.92

最佳实践建议

  1. 选择合适的模型

    • 对于48kHz高保真音频,优先使用MossFormer2_SE_48K
    • 对于16kHz音频,可以根据场景选择:
      • 通用场景:使用MossFormerGAN_SE_16K或MossFormer2_SE_16K
  2. 批量处理优化

    • 处理大量音频文件时,建议使用 online_write=True
    • 使用.scp列表文件管理批量处理任务
  3. 性能考虑

    • 根据实际需求平衡音质和处理速度
    • 考虑硬件资源选择合适的批处理大小

总结

ClearerVoice-Studio为音频处理提供了一个强大而易用的解决方案。通过本教程的学习,你应该能够掌握其基本使用方法,并能够根据实际需求选择合适的模型和处理方式。随着项目的不断更新,我们期待看到更多优秀的预训练模型和功能特性的加入。

相关文章

There are no related posts yet. 😢