aeneas:音频和文字自动对齐,支持38种语言
文章目录
- aeneas:音频和文字自动对齐,支持38种语言
- 它能干什么
- 安装和使用
- 几个细节
- 局限性
aeneas:音频和文字自动对齐,支持38种语言
做有声书、字幕、语音研究的人,应该都碰过这个问题:一段音频,一份文字稿,怎么把每一句话和它在音频里的时间位置对应起来?手动做?几百页的书能累死人。靠 ASR 语音识别?精度不够,还得人工校对。
aeneas 就是专门解决这个的。它是一个 Python/C 库,能自动把文字片段和音频做"强制对齐"(forced alignment),输出每个文字片段对应的起止时间戳。
举个例子,给它一段莎士比亚的十四行诗音频和对应的文字,aeneas 会输出这样的结果:
From fairest creatures we desire increase, => [00:00:02.640, 00:00:05.880] That thereby beauty's rose might never die, => [00:00:05.880, 00:00:09.240] But as the riper should by time decease, => [00:00:09.240, 00:00:11.920]每一句话精确到毫秒,直接可用。
它能干什么
aeneas 的核心能力就是音频文字对齐,但围绕这个核心,它做了不少实用功能。
支持 38 种语言,包括中文、英文、日文、法文、德文、阿拉伯文等等。只要 eSpeak 或 Festival 这些 TTS 引擎支持的语言,aeneas 都能处理。
输出格式很全:做研究用的 Audacity、ELAN、TextGrid 格式,做字幕的 SRT、WebVTT、TTML 格式,做电子书的 SMIL 格式,还有 JSON、CSV、XML 这些通用格式。基本上下游需要什么格式,它都能输出。
输入格式也没限制,音频方面 ffmpeg 能读的格式它都认。文字方面支持纯文本、XML、XHTML,还能从 XML 的 id 和 class 属性里提取文字内容。
安装和使用
安装流程很标准。装好 Python、FFmpeg、eSpeak 三件套,然后 pip 装 numpy 和 aeneas 就行。Mac 和 Windows 有一键安装包,Linux 有 deb 包。实在搞不定环境的,官方还提供了 VirtualBox 虚拟机镜像,开箱即用。
用法分两种场景。
单个任务直接命令行跑:
python -m aeneas.tools.execute_task \ audio.mp3 \ text.txt \ "task_language=eng|os_task_file_format=json|is_text_type=plain" \ map.json第三个参数是配置字符串,控制输入输出格式和处理选项。看起来参数多,但文档里有详细说明,照着配就行。
批量任务用 job 模式,把多组音频文字打包成 zip,配好 config 文件,一条命令全部处理完。适合有大量文件要对齐的场景。
几个细节
aeneas 用了 MFCC(梅尔频率倒谱系数)和 DTW(动态时间规整)做核心算法,而且这部分是用 C 写的 Python 扩展,处理速度比纯 Python 快很多。
TTS 引擎方面,默认用 eSpeak,但也支持 Festival、AWS Polly、Nuance TTS API 等引擎。换更好的 TTS 引擎能提升对齐精度,尤其是做单词级别对齐的时候。
说到单词级别对齐,aeneas 原本是按句子或段落级别设计的。用它做单词级对齐时,可以开启 MFCC 非语音掩码、用多层级对齐模式、换更好的 TTS 引擎来提升效果。
它还能从 YouTube 下载音频直接处理,支持递归对齐(先对齐段落,再对齐句子,最后对齐单词),参数可以在运行时调整。
局限性
音频和文字要匹配,如果文字里有大段多余内容或者音频里有大段无关内容,出来的结果会不对。它假设输入是语音,不适合歌曲字幕。内存方面也有要求,4GB 内存大概能处理 2 小时的音频,16GB 能处理 10 小时。
这个项目 Star 数不到 3000,不算热门,但在音频文字对齐这个细分领域,它是少数几个开箱即用的工具之一。做有声书制作、语音研究、字幕生成的人,值得看看。
3000,不算热门,但在音频文字对齐这个细分领域,它是少数几个开箱即用的工具之一。做有声书制作、语音研究、字幕生成的人,值得看看。
