Speaker Similarity Evaluator - 新格式使用说明
概述
音色相似度评估器现在支持从JSONL文件读取输入数据,并且支持两种prompt音频输入模式:
- 预分割模式:直接提供S1和S2的分别音频文件
- 自动分割模式:提供combined prompt音频,程序自动按说话人标签分割
输入格式
JSONL文件格式
每行是一个JSON对象,必须包含以下字段:
必需字段
text: 待评估的文本,包含说话人标签[S1][S2]output_audio: 待评估的音频文件路径
prompt音频字段(两种模式择一)
模式1:预分割模式
prompt_audio_speaker1: S1说话人的音频文件prompt_text_speaker1: S1说话人的文本prompt_audio_speaker2: S2说话人的音频文件prompt_text_speaker2: S2说话人的文本
模式2:自动分割模式
prompt_audio: 包含两个说话人的combined音频文件prompt_text: 包含说话人标签的文本,如"[S1]文本1[S2]文本2"
示例
预分割模式示例
{
"text": "[S1]是我对不住你。[S2]没有没有!燕子幸亏咱俩没领证!",
"prompt_audio_speaker1": "/path/to/speaker1.wav",
"prompt_text_speaker1": "一共二十万我都记着呢。我一赚到钱就马上还给你。",
"prompt_audio_speaker2": "/path/to/speaker2.wav",
"prompt_text_speaker2": "没关系,我不缺钱。",
"output_audio": "/path/to/output.wav"
}
自动分割模式示例
{
"text": "[S1]今天天气真好啊。[S2]是的,阳光明媚。",
"prompt_audio": "/path/to/combined_prompt.wav",
"prompt_text": "[S1]早上好,今天怎么样?[S2]很好,谢谢你的关心。",
"output_audio": "/path/to/output.wav"
}
混合模式示例(同时提供两种模式,优先使用预分割)
{
"text": "[S1]是我对不住你。[S2]没有没有!",
"prompt_audio": "/path/to/combined.wav",
"prompt_text": "[S1]一共二十万我都记着呢。[S2]没关系,我不缺钱。",
"prompt_audio_speaker1": "/path/to/speaker1.wav",
"prompt_text_speaker1": "一共二十万我都记着呢。我一赚到钱就马上还给你。",
"prompt_audio_speaker2": "/path/to/speaker2.wav",
"prompt_text_speaker2": "没关系,我不缺钱。",
"output_audio": "/path/to/output.wav"
}
使用方法
命令行运行
# 使用JSONL文件输入
python test.py --jsonl_path /path/to/your/input.jsonl --output_dir /path/to/results
# 使用默认示例数据(向后兼容)
python test.py --output_dir /path/to/results
程序调用
from test import SpeakerSimilarityEvaluator
# 创建评估器
evaluator = SpeakerSimilarityEvaluator(output_dir="/path/to/results")
# 从JSONL文件处理
evaluator.process_batch_from_jsonl("/path/to/input.jsonl")
# 或者直接传入数据列表(旧接口,向后兼容)
input_data = [
{
'prompt_audio': "/path/to/prompt.wav",
'prompt_text': "[S1]文本1[S2]文本2",
'text': "[S1]输出文本1[S2]输出文本2",
'output_audio': "/path/to/output.wav"
}
]
evaluator.process_batch(input_data)
优势
预分割模式的优势
- 更高精度:避免了自动分割可能带来的误差
- 更快速度:跳过音频分割步骤
- 更稳定:不依赖词对齐模型的准确性
自动分割模式的优势
- 便利性:只需要提供一个combined音频文件
- 向后兼容:与现有数据格式兼容
输出文件结构
results_YYYYMMDD_HHMMSS/
├── segments/ # 分割后的音频片段
├── prompts/ # prompt音频的S1和S2片段(仅自动分割模式)
├── temp/ # 临时文件(运行结束后清空)
└── results/ # 评估结果
├── speaker_similarity_results_YYYYMMDD_HHMMSS.jsonl
└── evaluation_summary_YYYYMMDD_HHMMSS.json
注意事项
- 确保所有音频文件路径正确且文件存在
- 文本中的说话人标签格式必须为
[S1]和[S2] - 如果同时提供两种模式的数据,程序优先使用预分割模式
- JSONL文件中的每行必须是有效的JSON格式
- 程序会自动验证输入数据的完整性,跳过有问题的行并继续处理
Inference Providers
NEW
This model isn't deployed by any Inference Provider.
🙋
Ask for provider support