当前位置: 首页 > news >正文

Kaldi - 数据文件准备

文章目录

    • 数据文件准备
      • wav.scp
      • utt2spk
      • spk2utt
      • text
    • 相关代码
      • 根据文件生成 utt2spk 和 wav.scp
      • utt2spk -- spk2utt 转换


数据文件准备

在训练/解码中:
有三个文件是必要的:

  1. wav.scp 语音编号 – 路径信息
  2. utt2spk 语音编号 – 说话人编号
  3. 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 (四,晴)

http://www.lryc.cn/news/497.html

相关文章:

  • 91.【SpringBoot-03】
  • 【本地项目】上传到【GitLab】流程详解
  • 初阶指针C
  • 云原生安全2.X 进化论系列|揭秘云原生安全2.X的五大特征
  • json文件在faster_rcnn中从测试到训练 可行性
  • golang 1.20正式发布,更好更易更强
  • 图片显示一半怎么回事?
  • 102-并发编程详解(中篇)
  • jsp羽毛球场馆管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
  • CacheLib 原理说明
  • 【dapr】服务调用(Service Invokation) - app id的解析
  • Odoo丨5步轻松实现在Odoo中打开企微会话框
  • python读取.stl文件
  • vue2.0项目第一部分
  • 锁与原子操作
  • Prometheus Pushgetway讲解与实战操作
  • 常见字符串函数的使用,你确定不进来看看吗?
  • Elasticsearch:在搜索中使用衰减函数(Gauss)
  • 微信小程序 Springboot英语在线学习助手系统 uniapp
  • LeetCode算法题解——双指针2
  • 线性杂双功能peg化试剂——HS-PEG-COOH,Thiol-PEG-Acid
  • Linux第三讲
  • SpringBoot07:SpringSecurity
  • C++ 浅谈之 STL Vector
  • 【个人作品】非侵入式智能开关
  • 数据存储技术复习(三)未完
  • ThinkPHP数据库迁移工具
  • 代理模式(Proxy Pattern)
  • Elasticesearch内存详解
  • SpringCloud之断路器聚合监控