Data-Speech: 为语音数据集添加自然语言标注的实用工具套件
Data-Speech是一套专为语音数据集标注设计的实用工具脚本集。它的主要目标是为语音AI模型(如文本转语音引擎)的开发提供一个简单、干净的代码库,用于应用音频转换或添加注释。这个项目的核心是复现Dan Lyth和Simon King在其研究论文《Natural language guidance of high-fidelity text-to-speech with synthetic annotations》中提出的注释方法,该方法使用自然语言描述来标注各种说话人特征。
主要功能
Data-Speech的主要功能包括:
-
为语音数据集添加连续变量标注,如说话速度、信噪比、混响等。
-
将连续变量标注映射为离散的关键词标签。
-
基于关键词标签生成自然语言描述。
这套工具的应用使得我们能够准备并发布带标注的LibriTTS-R和MLS英语版本数据集。
使用方法
Data-Speech的使用流程主要包含以下几个步骤:
-
标注语音数据集:使用
main.py
脚本为数据集添加连续变量标注,包括说话速度、信噪比、混响和语音单调性等。 -
将标注映射为文本标签:使用
metadata_to_text.py
脚本将连续变量标注映射为离散的文本标签。 -
生成自然语言描述:使用大语言模型(如Mistral-7B)基于文本标签生成自然语言描述。
以下是一个使用示例,展示了如何为Jenny TTS数据集添加标注:
# 步骤1:标注数据集
python main.py "reach-vb/jenny_tts_dataset" \
--configuration "default" \
--text_column_name "transcription" \
--audio_column_name "audio" \
--cpu_num_workers 8 \
--rename_column \
--repo_id "jenny-tts-tags-v1" \
--apply_squim_quality_estimation
# 步骤2:映射为文本标签
python ./scripts/metadata_to_text.py \
"ylacombe/jenny-tts-tags-v1" \
--repo_id "jenny-tts-tags-v1" \
--configuration "default" \
--cpu_num_workers "8" \
--path_to_bin_edges "./examples/tags_to_annotations/v02_bin_edges.json" \
--path_to_text_bins "./examples/tags_to_annotations/v02_text_bins.json" \
--avoid_pitch_computation \
--apply_squim_quality_estimation
# 步骤3:生成自然语言描述
python ./scripts/run_prompt_creation.py \
--speaker_name "Jenny" \
--is_single_speaker \
--is_new_speaker_prompt \
--dataset_name "ylacombe/jenny-tts-tags-v1" \
--dataset_config_name "default" \
--model_name_or_path "mistralai/Mistral-7B-Instruct-v0.2" \
--per_device_eval_batch_size 128 \
--attn_implementation "sdpa" \
--output_dir "./tmp_jenny" \
--load_in_4bit \
--push_to_hub \
--hub_dataset_id "jenny-tts-tagged-v1" \
--preprocessing_num_workers 24 \
--dataloader_num_workers 24
数据集要求
Data-Speech依赖于datasets
库,该库针对速度和效率进行了优化,并与HuggingFace Hub深度集成,便于共享和加载数据集。
要使用Data-Speech,你需要一个来自datasets
库的语音数据集,该数据集至少包含一个音频列和一个文本转录列。此外,如果你想计算音高,还需要性别和说话人ID列。
项目意义
Data-Speech的开发旨在为TTS研究社区提供一个可扩展且易于修改的工具,以探索语音合成的新方法。它不仅可以用于为语音数据集添加标注,还可以用于过滤和筛选语音数据集,例如:
- 使用"Predict annotations"步骤来预测信噪比和混响。
- 过滤数据集以仅保留最高质量的样本。
- 根据特定的音高水平(例如只选择低音调的声音)或特定的语速(例如只选择快速语音)进行过滤。
未来发展
Data-Speech项目还在不断发展中,计划中的改进包括:
- 口音分类训练和推理脚本
- 通过长时间静音移除来改进说话速度估计
- 使用其他SNR模型来改进SNR估计
- 添加更多注释类别
- 多语言说话速度估计
- 最佳音频数据集格式的基准测试
- 与流式处理的兼容性
结语
Data-Speech作为一个开源项目,建立在多个开源巨人的基础之上。它为语音AI研究提供了宝贵的工具,使研究人员能够更方便地处理和标注语音数据集。随着项目的不断发展和完善,相信它将为语音合成技术的进步做出重要贡献。🎙️💬🤖
如果您发现这个项目对您的研究有帮助,请考虑引用相关工作:
@misc{lacombe-etal-2024-dataspeech,
author = {Yoach Lacombe and Vaibhav Srivastav and Sanchit Gandhi},
title = {Data-Speech},
year = {2024},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/ylacombe/dataspeech}}
}
让我们共同期待Data-Speech在语音AI领域带来更多创新和突破! 🚀🔊🌟