• 捷通华声TTS在Aster+中的安装过程


    1)挂载TTS光碟

    2)安装如下5个rpm软件包

     [asterisk@TTS78:/mnt]$ls *.rpm
    jTTS-5.0.1.0-3.i386.rpm             VocLib_XiaoKun1-5.0.1.0-3.i386.rpm  VocLib_XiaoKun3-5.0.1.0-3.i386.rpm
    VocLib_XiaoKun0-5.0.1.0-3.i386.rpm  VocLib_XiaoKun2-5.0.1.0-3.i386.rpm  VocLib_XiaoKun4-5.0.1.0-3.i386.rpm
    [asterisk@TTS78:/mnt]$

    3) 修改如下文件,生成Asterisk可以播报的语音编码格式——pcm编码,8kHZ,单声道,16位。然后这行make生成转换命令。

    修改
    /opt/SinoVoice/jTTS-5.0.1.0/Example/test/PlayToFile.cpp 第213行
    改成
    err = jTTS_PlayToFile(szText, szToFile, 6, NULL, 0, NULL, 0);
    这样,才成生成asterisk要求参数的wav文件
    注意:改完后,要用make命令,生成PlayToFile.exe 等可执行文件,这个非常重要,一定不能少!

    4)注意,如果是你没有usb key ,那么到这里其实已经安装完成了。至少到这里后,root账号就可以用这个了。如果你想做的更好,可以修改下环境变量,在/etc/profile中加入到PATH

    JTTS_ROOT=/opt/SinoVoice/jTTS-5.0.1.0
    export JTTS_ROOT
    LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
    export LD_LIBRARY_PATH
    PATH=$PATH:/opt/SinoVoice/jTTS-5.0.1.0/bin
    export PATH

    5)剩下的就是用如下命令测试了

    [root@TTS78:/tmp]$more wjj.txt
    吴俊杰,你好不好啊!
    [asterisk@TTS78:/tmp]$
    [asterisk@TTS78:/tmp]$/opt/SinoVoice/jTTS-5.0.1.0/Example/test/PlayToFile.exe  xiaokun 65001 wjj.txt wjj.wav
    jTTS_Init successful .
    Voice Count : 1
    jTTS_SetParam voice ID successful .
    jTTS_SetParam set code page successful .
    jTTS_SetParam set audio background successful .
    InitCostArray cost.res load finish !
    jTTS_PlayToFile successful .
    jTTS_End successful . err = 0
    [root@TTS78:/tmp]$

    发现成功!

    6)但是,当你用非root用户,例如Aster+中的asterisk用户执行的时候,就会出现很多问题。

    问题1:发现没有权限写gmon.out
    [root@TTS78:/tmp]$su - asterisk
    [asterisk@TTS78:~]$cd /tmp
    [asterisk@TTS78:/tmp]$ls
    gmon.out  IPPBX_Tmp_Upload  Runtime  wjj.txt  wjj.wav
    [asterisk@TTS78:/tmp]$
    因为此文件在/tmp/是由root生成的,所以换成asterisk后就没有权限了。解决方法,先删掉此文件。

    问题2:发现日志文件没有权限写了,道理同上
    [root@TTS78:/opt/SinoVoice/jTTS-5.0.1.0/bin]$ll -h jtts.log
    -rwxrwxrwx 1 root root 854 Nov 20 14:23 jtts.log
    [root@TTS78:/opt/SinoVoice/jTTS-5.0.1.0/bin]$

    解决方法,需要给jtts.log 777 权限,或者在配置文件中直接关闭此文件

    问题3:如果是正式版,有usb key的时候,发现asterisk用户无法生成tts,原来是usb设备权限。需要:
    chmod -R 777 /dev/bus/usb
    而且要将此条命令加到rc.local中。

    7)详细错误请看日志
    [root@TTS78:/opt/SinoVoice/jTTS-5.0.1.0/bin]$tailf jtts.log
    {2013-11-20 13:59:27|2507|-1208411936}ERROR:GetData: {84316E85-143E-4410-B00B-9DF681684C6C} license error, LicenseType: 1
    {2013-11-20 14:01:37|2610|-1208530720}ERROR:GetData: {84316E85-143E-4410-B00B-9DF681684C6C} license error, LicenseType: 1

    ============后续问题:

    1)以上是在shell中执行tts命令生成wav文件,无论用asterisk还是root都已经没有问题了,但是,如果实在 php网页中用system()脚本函数生成,就出现问题了。

     所以你,需要在 /opt/php/etc/php-fpm.conf 中加上如下环境变量。因为php-fpm运行的时候,不像 shell 用户asterisk 有环境变量。
    env[JTTS_ROOT] = /opt/SinoVoice/jTTS-5.0.1.0
    env[LD_LIBRARY_PATH] = /opt/SinoVoice/jTTS-5.0.1.0/bin
    经过上面的修改,发现非常成功,如下:

    [root@TTS78:/tmp]$
    [root@TTS78:/tmp]$more /var/www/html/tts.php
    <?php
            $str = shell_exec(". /etc/profile;/opt/SinoVoice/jTTS-5.0.1.0/Example/test/PlayToFile.exe xiaokun 65001 /tmp/wjj.txt /tmp/wjj2.wav 2>&1");
            echo $str;

    ?>
    [root@TTS78:/tmp]$
    [root@TTS78:/tmp]$wget http://localhost/tts.php
    --2013-11-20 15:32:18--  http://localhost/tts.php
    Resolving localhost... 127.0.0.1
    Connecting to localhost|127.0.0.1|:80... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: unspecified [text/html]
    Saving to: `tts.php'

        [ <=>                                                                                                           ] 261         --.-K/s   in 0s     

    2013-11-20 15:32:18 (40.2 MB/s) - `tts.php' saved [261]

    [root@TTS78:/tmp]$
    [root@TTS78:/tmp]$ls
    IPPBX_Tmp_Upload  Runtime  tts.php  wjj2.wav  wjj.txt
    [root@TTS78:/tmp]$
    [root@TTS78:/tmp]$more tts.php
    jTTS_Init successful .
    Voice Count : 1
    jTTS_SetParam voice ID successful .
    jTTS_SetParam set code page successful .
    jTTS_SetParam set audio background successful .
    InitCostArray cost.res load finish !
    jTTS_PlayToFile successful .
    jTTS_End successful . err = 0
    [root@TTS78:/tmp]$

  • 相关阅读:
    【JUC源码解析】AQS
    【JUC源码解析】Exchanger
    圣杯布局和双飞翼布局的理解和区别
    右侧固定宽度,左侧自适应屏幕的布局(笔试题)
    CSS和CSS3中的伪元素和伪类(总结)
    用CSS创建小三角形问题(笔试题常考)
    Pycharm下载安装和使用
    PIC33单片机中断服务函数写法(其他单片机同样适用)
    记录,ubuntu16.04将gitlab迁移到docker上遇到的一些问题与解决方法
    【算法】 算法效率
  • 原文地址:https://www.cnblogs.com/voiphudong/p/3433549.html
Copyright © 2020-2023  润新知