(一)Prearation
假设数据集的名字为 “flow”
(1)准备数据
定义环境变量:(我的数据库名flow)
$ export DATABASE=flow.SpeakerDiarization.flow
(2)需要创建一个目录来存放数据
$ DOWNLOAD_TO=~/pyannote_test/pyannote-audio/tests/data
(3)DOWNLOAD_TO中存在一个配置文件database.yml
输入 查看配置文件信息是否正确
$ cat ${DOWNLOAD_TO}/database.yml
输入 进行数据库环境变量配置
$ export PYANNOTE_DATABASE_CONFIG=${DOWNLOAD_TO}/database.yml
(一)定义
(1)在pyannote.database中对于音频、视频——将其建模为pyannote.database.ProtocolFile实例,并用 uri 标识每个实体
metadata: 可以在ProtocolFile上添加标签将其联系到一个资源
database:具有相同属性的数据集合(例如音频文件):他被建模为:pyannote.database.Database实例
实验性协议通常定义三个子集:
train subset 用于训练神经网络
development subset 用于调整超参数
test subset 用于评估
(2)实验性协议通过YAML配置文件定义:
(3)pyannote.database将在以下位置按优先级查找配置文件:
1、当前目录下的database.yml文件
2、pyannote_Database_config环境变量
3、~/.pyannote/database.yml
(二)数据加载Data loaders
可以使用以下语法将元数据添加到每个资源:
Protocols:
MyDatabase:
Protocol:
MyProtocol:
train:
uri: lists/train.lst
speaker: rttms/train.rttm
transcription: ctms/{uri}.ctm
资源有‘speaker’和‘transcription’
根据元数据文件后缀自动选择数据加载器:
pyannote.database.loader.RTTMLoader用于带.rttm后缀的‘speaker’输入
pyannote.database.loader.CTMLoader用于带ctm后缀的‘transcription’输入。
并用于填充speaker和transcription 键
(三)Preprocessors预处理器
(四)任务
1) collections
可以使用“收集”任务 定义文件的原始收集
2)speaker diarizaiton
可以使用SpeakerDiarization任务专门为说话者区分定义协议:
配置文件:
Protocols:
MyDatabase:
SpeakerDiarization:
MyProtocol:
train:
uri: /path/to/train.lst
annotation: /path/to/train.rttm
annotated: /path/to/train.uem
运行python文件查看训练 uri 文件集
from pyannote.database import get_protocol
protocol = get_protocol('flow.SpeakerDiarization.flow')
for file in protocol.train():
print(file["uri"])
assert "annotation" in file
assert "annotated" in file
(3)说话确认Speaker verification
(五)meta-protocols
可以将几种协议联系在一起
(六)plugins
(七)API
Custom data loaders