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, , 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]$

最新文章

  1. java 接口学习
  2. Windows上模拟Linux环境
  3. mongodb csv 文件导入数据库,删除特定字段
  4. 分享8款最新HTML5/CSS3功能插件及源码下载
  5. linux 错误总结
  6. ASP.NET MVC5总结(四)登陆中常用技术解析之验证码
  7. IAAS云计算产品畅想-云主机产品内涵
  8. 转 - .net/c# 使用RabbitMQ
  9. rocketmq批量消息投递
  10. Alibaba Java开发手册索引规约学习笔记
  11. Spring IoC的原理为什么是反射而不是new
  12. Oracle伪列(ROWNUM)的使用
  13. vghyj
  14. 使用QQ传输大文件
  15. L3-021 神坛(极角排序求三角形最小面积)
  16. 【Spark】Spark-架构
  17. poj3292(筛法+打表)
  18. 运行wmic命令异常:java.io.IOException: Cannot run program &quot;wmic&quot;: CreateProcess error=2, ϵͳ&#213;Ҳ&#187;&#181;&#189;ָ&#182;解决记录
  19. mysql rand
  20. 你不知道的KVO的内部实现

热门文章

  1. 使用Arduino模块实施无线信号的重放攻击
  2. ubuntu下的烧录工具
  3. Linux运维学习笔记-TCP三次握手和四次挥手
  4. mysql 常用linux命令
  5. java8 array、list操作 汇【4】)- Java8 Lambda表达式 函数式编程
  6. day20 python sys os time json pickl 正则
  7. graphql 数据导入工具
  8. 手动配置SVN服务
  9. 检索关键字 nyoj
  10. tomcat源码阅读之Catalina和Bootstrap解析