centos ekho php,CentOS 5下freeswitch中集成使用ekho实现TTS功能三

本文档详细介绍了在FreeSWITCH中配置中文语音包及ekho模块的过程,包括创建声音目录、移动声音文件、修改配置文件以支持中文,以及编写Lua脚本来实现TTS和交互式语音应答(IVR)。主要涉及FreeSWITCH的XML配置、语言加载、say模块和TTS命令行接口的使用。
摘要由CSDN通过智能技术生成

四:在freeswitch中调用ekho

注:在测试过程中该语音包好像没用

FreeSWITCH 中文语音包测试版fssounds.zip

在/usr/local/freeswitch/sounds/下建立目录zh/cn/sue(因为不知道声音主人的名字,就先用sue代替了,抱歉抱歉)

mkdir -p /usr/local/freeswitch/sounds/zh/cn/sue

将声音文件移动到目标目录

mv output/* /usr/local/freeswitch/sounds/zh/cn/sue/

- 增加中文定义

cd /usr/local/freeswitch/conf/lang

cp -a en zh

cd zh

mv en.xml zh.xml

编辑zh.xml,将第2行换成

- 增加对中文的加载

编辑/usr/local/freeswitch/conf/freeswitch.xml,找到段,加入

- 增加中文say模块的加载

编辑/usr/local/freeswitch/conf/autoload_configs/modules.conf.xml

去除的注释

- 设置中文为默认语言

编辑/usr/local/freeswitch/conf/vars.xml,加入以下几行

- 增加对ekho的中文支持

编辑/usr/local/freeswitch/conf/autoload_configs/tts_commandline.conf.xml

改为:

- 重新加载xml,在fs_cli,执行:

reloadxml

- 外呼电话路由到lua脚本实现TTS

originate user/1002 &lua(recharge.lua)

1 --session:set_tts_parms("tts_commandline", "Ting-Ting")

2 --session:setVariable("tts_engine", "tts_commandline")

3 --session:setVariable("tts_voice", "Ting-Ting")

4 --session:answer()

5 --session:sleep(1000)

6 --print("hello")

7 --session:speak("hello")

8 --session:speak("您好,欢迎使用空中充值服务")

9 --session:speak("hello,我是好人")

10 --session:sleep(5000)

11

12

13 error_prompt = "say:输入错误,请重新输入"

14 account = ""

15 digits = ""

16 balance = 100 --余额

17 charge = 100 --充值卡上金额

18

19 function error()20 session:speak("输入错误,请重新输入")21 end

22

23 functiondo_charge(account, charge)24 balance = balance +charge25 returnbalance26 end

27

28 functionmain_menu()29 if not session:ready() then return end

30

31 --session:speak(‘查询请按1,充值请按2,否则请挂机‘)

32 digits = session:playAndGetDigits(1, 1, 3, 10000, "#", "say:查询请按1,充值请按2,否则请挂机", error_prompt, "^1|2$")33 --digits = session:playAndGetDigits(2, 2, 3, 10000, "#", "", "", "")

34 --session:speak(‘输入错误,请重新输入‘)

35 --digits = session:playAndGetDigits(1, 1, 3, 5000, "#", "", "", "^1|2$")

36 session:execute("log", "INFO main_menu:".. digits)37 if not (digits == "") then

38 ask_account(digits)39 else

40 --session:speak(‘输入错误,请重新输入‘)

41 --main_menu()

42 goodbye()43 end

44 end

45

46 functionask_account(service_type)47 if not session:ready() then return end

48

49 digits = session:playAndGetDigits(4, 5, 3, 5000, "#", "say:请输入你的帐号,以井号结束", error_prompt, "^\\d{4}$")50 session:execute("log", "INFO account:".. digits)51 if not (digits == "") then

52 account =digits53 if (service_type == "1") then

54 ask_account_password()55 else

56 ask_card()57 end

58 else

59 goodbye()60 end

61 end

62

63 functionask_account_password()64 if not session:ready() then return end

65

66 digits = session:playAndGetDigits(4, 5, 3, 5000, "#", "say:请输入你的密码,以井号结束", error_prompt, "^\\d{4}$")67 session:execute("log", "INFO account p:".. digits)68 if not (digits == "") then

69 password =digits70 chack_account_password()71 else

72 goodbye()73 end

74 end

75

76

77

78 functionask_card()79 if not session:ready() then return end

80

81 digits = session:playAndGetDigits(4, 5, 3, 5000, "#", "say:请输入你的充值卡卡号,以井号结束", error_prompt, "^\\d{4}$")82 session:execute("log", "INFO card:".. digits)83

84 if not (digits == "") then

85 card =digits86 chack_account_card()87 else

88 goodbye()89 end

90 end

91

92

93 functionchack_account_password()94 if not session:ready() then return end

95

96 if (account == "1111" and password == "1111") then

97 session:speak("您的余额是" .. balance .. "元")98 session:sleep(5000)99 main_menu()100 else

101 session:speak("输入错误,请重新输入")102 main_menu()103 end

104 end

105

106 functionchack_account_card()107 if not session:ready() then return end

108

109 if (account == "1111" and card == "2222") then

110 session:speak("您要充值" .. charge .. "元")111

112 digits = session:playAndGetDigits(1, 1, 3, 10000, "#", "say:确认请按1,返回请按2", error_prompt, "^[12]$")113

114 if digits == "1" then

115 balance =do_charge(account, charge)116 session:speak("充值成功,充值金额为" .. charge .. "元,余额为" .. balance .. "元")117 main_menu()118 else

119 if digits == "2" then

120 session:sleep(5000)121 main_menu()122 else

123 goodbye()124 end

125 end

126 else

127 session:speak("输入有误,请重新输入")128 ask_account("2")129 end

130 end

131

132 functiongoodbye()133 if not session:ready() then return end

134

135 session:speak("再见")136 session:hangup()137 end

138

139

140 session:set_tts_parms("tts_commandline", "Mandarin")141 session:setVariable("tts_engine", "tts_commandline")142 session:setVariable("tts_voice", "Mandarin")143

144 session:answer()145 --session:speak("hello,welcome to freeSWITCH")

146 session:speak("您好,欢迎使用空中充值服务") --,"zh", "messages", "pronounced")

147 session:set_tts_parms("flite", "kal")148 session:speak("Please say the name of the person you‘re trying to contact")149 session:set_tts_parms("tts_commandline", "Mandarin")150 --session:speak("您好,欢迎使用空中充值服务")

151 --session:say("12345", "zh", "number", "pronounced")

152 --session:sleep(10000)

153 main_menu()154 --session:streamFile("/usr/local/freeswitch/hello.wav")

155 --session:streamFile("/usr/local/freeswitch/sounds/zh/cn/sue/ivr/8000/ivr-accept_reject_voicemail.wav")

156 --Sound.load("/usr/local/freeswitch/sounds/music/8000/danza-espanola-op-37-h-142-xii-arabesca.wav"):play()

157 session:hangup()158 --session:print("hello!")

原文:http://www.cnblogs.com/zxqdlenovo/p/4031060.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值