aeneas 实现音频强制对齐

做英语学习类产品经常会遇到读句子的时候针对单个单词的类卡拉ok的高亮效果。 这里记录一下音频进度和单词的一一对应关系(类似于歌词文件,粒度为单词级别)如何生成。纯人工来校对的话人工成本还是比较大的。 专业的词语是强制对齐(Forced Alignment)。这里介绍python库aeneas,可针对每句或每个单词的时间节点的json文件,还可以批量操作。准确率还不错。文档:
https://github.com/readbeyond/aeneas

http://www.readbeyond.it/aeneas/

使用方式:

1.安装软件
一键安装包(windows版本和mac版本)
https://github.com/sillsdev/aeneas-installer/releases

2.准备文档。一个文件夹。取名,如folder。
包含

config.txt   //配置文件  包含格式、输出路径等
audios/      //音频和句子信息
   -- Can_you_see_me.txt   //包含对应句子文本
   -- Can_you_see_me.m4a   //对应音频。 与文本文件名一致
   -- Yes_can.txt          //可批量操作
   -- Yes_can.m4a      

3.打开命令行工具、终端。进入folder所在的目录下。创建一个output文件夹。
执行命令行: python -m aeneas.tools.execute_job folder/ output/

4.生成成功。到输出目录下找对应的文件生成文件。可自己写个简单的h5,上传生成的json和音频做准确率校验。

5.Windows下aeneas错误处理。the default input encoding is not UTF-8.You might want to set ‘PYTHONIOENCODING=UTF-8’ in your shell. 解决方案,终端进入python安装目录下,执行命令如:

cd C:\Python27\Scripts  
set PYTHONIOENCODING=UTF-8

6.config.txt配置,包含路径、格式等信息。

is_hierarchy_type=flat
is_hierarchy_prefix=audios/
is_text_file_relative_path=.
is_text_file_name_regex=.*\.txt
is_text_type=mplain
is_audio_file_relative_path=.
is_audio_file_name_regex=.*\.m4a
is_audio_file_detect_head_max=10.000
is_audio_file_detect_tail_max=10.000

os_job_file_name=output_example1
os_job_file_container=zip
os_job_file_hierarchy_type=flat
os_job_file_hierarchy_prefix=audios/
os_task_file_name=$PREFIX.json
os_task_file_format=json
os_task_file_smil_page_ref=$PREFIX.xhtml
os_task_file_smil_audio_ref=$PREFIX.m4a
os_task_file_levels=3



job_language=en
job_description=Example 1 (flat hierarchy, parsed text files)

7.输出。

{
 "fragments": [
  {
   "begin": "1.560",  
   "end": "2.070",  
   "lines": [
    "Thanks"
   ]
  }, 
  {
   "begin": "2.070",  
   "end": "2.360",  
   "lines": [
    "for"
   ]
  }, 
  {
   "begin": "2.360",  
   "end": "2.950",  
   "lines": [
    "taking"
   ]
  }, 
  {
   "begin": "2.950",  
   "end": "3.405",  
   "lines": [
    "care"
   ]
  }, 
  {
   "begin": "3.405",  
   "end": "3.750",  
   "lines": [
    "of"
   ]
  }, 
  {
   "begin": "3.750",  
   "end": "4.140",  
   "lines": [
    "my"
   ]
  }, 
  {
   "begin": "4.140",  
   "end": "4.520",  
   "lines": [
    "dog!"
   ]
  }
 ]
}

github地址:https://github.com/liusaint/ls-blog/issues/36

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值