建设教育网站灰色行业关键词优化
文章目录
- 数据文件准备
- wav.scp
- utt2spk
- spk2utt
- text
- 相关代码
- 根据文件生成 utt2spk 和 wav.scp
- utt2spk -- spk2utt 转换
数据文件准备
在训练/解码中:
有三个文件是必要的:
- wav.scp 语音编号 – 路径信息
- utt2spk 语音编号 – 说话人编号
- spk2utt 说话人编号 – 说话人的语音编号;可以根据 spk2utt 生成,下面将会介绍
一个标注文件用于测试的:
text
这里以 aishell 为例:
wav.scp
结构
[utterance] [wav_path]
BAC009S0002W0122 /home/code/kaldi/egs/aishell/s5/data1/data_aishell/wav/train/S0002/BAC009S0002W0122.wav
BAC009S0002W0123 /home/code/kaldi/egs/aishell/s5/data1/data_aishell/wav/train/S0002/BAC009S0002W0123.wav
BAC009S0002W0124 /home/code/kaldi/egs/aishell/s5/data1/data_aishell/wav/train/S0002/BAC009S0002W0124.wav
utt2spk
结构:
[utterance] [speaker]
BAC009S0002W0122 S0002
BAC009S0002W0123 S0002
spk2utt
结构:
[speaker] [utterance]
S0002 BAC009S0002W0122 BAC009S0002W0123 BAC009S0002W0124 BAC009S0002W0125 BAC009S0002W0126 BAC009S0002W0127 BAC009S0002W0128 BAC009S0002W0129 BAC009S0002W0130 BAC009S0002W0131 BAC009S0002W0132 ...
S0003 BAC009S0003W0121 BAC009S0003W0122 BAC009S0003W0123 BAC009S0003W0124 BAC009S0003W0125 BAC009S0003W0126 BAC009S0003W0127 BAC009S0003W0128 BAC009S0003W0129 BAC009S0003W0130 BAC009S0003W0131 ...
S0004 BAC009S0004W0121 BAC009S0004W0123 BAC009S0004W0124 BAC009S0004W0125 BAC009S0004W0126 BAC009S0004W0127 BAC009S0004W0128 ...
text
[utterance] [transcript]
BAC009S0002W0122 而 对 楼市 成交 抑制 作用 最 大 的 限 购
BAC009S0002W0123 也 成为 地方 政府 的 眼中 钉
BAC009S0002W0124 自 六月 底 呼和浩特 市 率先 宣布 取消 限 购 后
BAC009S0002W0125 各地 政府 便 纷纷 跟进
BAC009S0002W0126 仅 一 个 多 月 的 时间 里
相关代码
根据文件生成 utt2spk 和 wav.scp
假设文件按 说话人–音频 排列,可以使用下属代码生成 utt2spk 和 wav.scp 文件
import osdata_root_dir = 'data'
utt2spk_path = 'utt2spk'
wav_scp_path = 'wav.scp'for speaker in os.listdir(data_root_dir):if speaker.startswith('.'):continuespearker_dir = os.path.join(data_root_dir, speaker)for wav in os.listdir(spearker_dir):if wav.startswith('.'):continuewav_path = os.path.join(spearker_dir, wav)wav_id = f'{speaker}_{wav}' with open(wav_scp_path, 'a') as fa:fa.write(wav_id + ' ' + wav_path + '\n')with open(utt2spk_path, 'a') as fa:fa.write(wav_id + ' ' + speaker + '\n')
utt2spk – spk2utt 转换
你可以使用代码 将 utt2spk 转为 文件:
kaldi_root/egs/wsj/s5/utils/utt2spk_to_spk2utt.pl utt2spk > spk2utt
utt2spk 文件内不能有空行,否则可能报错
同样,你也可以使用 spk2utt_to_utt2spk.pl
反向将 spk2utt 生成 utt2spk
伊织 2023-02-09 (四,晴)