在linux安装p2fa

    可以在官方的文档中看到,安装这个p2fa需要两个工具包,一个是htk,一个是sox,而p2fa的安装只需要在将这两个工具包装好之后,将官方的安装包下载并解压,就可以直接使用

    这其中比较复杂的就是htk的安装,需要注意的是,htk目前官方只提供3.4.1和3.5两个版本,但是p2fa只能在3.4版本的基础上运行,所以需要获取3.4版本的资源,这个资源可以在这里找到。下载HTK-3.4.tar.gzHTK-samples-3.4.zip就可以了。

接下来是htk3.4的安装,具体步骤可以参照这两个博客:linux下HTK安装说明以及HTK在Ubuntu下的安装步骤

    但是在这些博客中没有提到的是在安装过程中,执行完make all之后可能会出现一个报错

Makefile.in:77: *** missing separator (did you mean TAB instead of 8 spaces?).  Stop.

    这是因为在./htk/HLMTools/Makefile中的第77行,他将tab键错输为了8个空格,使用vim应该会看到这个错误提示,修改之后就可以正确运行了。

    还需要注意的是环境变量的配置那一步,直接export仅在本次登录中有效,如果需要永久修改该环境变量,需要修改/etc/profile这个文件,在末尾加上

export PATH=$PATH:/home/user/p2fa/htk/bin一行,然后执行source Makefile,但是在我的后续的测试中,仍然存在报错

Calling HInit for HMM S
sh: HInit: not found


Calling HInit for HMM C
sh: HInit: not found


Calling HInit for HMM V
sh: HInit: not found


Calling HInit for HMM N
sh: HInit: not found


Calling HInit for HMM L
sh: HInit: not found
Source Directory Empty hmms/hmm.0

在一个外网论坛上看到了这个问题的解决方案:环境变量还需要将刚刚那个HTKTools加进去

export PATH=$PATH:/home/user/p2fa/htk/HTKTools 这样就没问题了

    当然如果你使用的是3.4.1版本的htk,后续在测试的wav音频如果有语音间隔(就是单词和单词之间的间隔),仍然不能正确执行,所以一定要安装3.4版本的htk

    sox的安装十分方便,直接pip install sox即可使用

    最后是p2fa的安装,在他们的官网可以找到这个工具的安装包,这个软件在他们官方的说明中可以看到仅测试了python2.5与python2.6,但是经过我测试,python2.7下也能正常运行,当然如果你需要安装python3版本下的p2fa,可以在这里找到源代码,同样的,这个版本的p2fa也需要3.4版本的htk。下载解压之后就可以运行这个软件了(需要将默认的文件夹名字Penn Phonetics forced aligner改为Penn,因为好像他的代码里面使用的文件夹名是Penn,没有后面那一长串),然后直接运行python align.py ./test/BREY00538.wav ./test/BREY00538.txt ./test/My.TextGrid即可运行,txt文件是这段语音的文字内容,TextGrid是划分的输出结果,运行结果既有将每个音位进行分割后的时间节点,也有将每个单词进行分割后的时间节点,从dict文件中可以看到,他其实是将每个单词的音位进行了标注(总共有12w个单词)

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页