前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >XSwitch通信百科之TGML铃音生成

XSwitch通信百科之TGML铃音生成

作者头像
Seven Du
发布2024-02-28 17:08:26
1020
发布2024-02-28 17:08:26
举报

TGML(Tone Generation Markup Language)用于在 XSwitch 内生成各种铃音。

TGML 可以直接在 XSwitch 界面上设置,如:

代码语言:javascript
复制
set ringback=%(1000,4000,450)

TGML 可以也可以用在 Dialplan 中,如(其中tone_stream是一个文件接口,相当于一个文件):

代码语言:javascript
复制
<action application="playback" data="tone_stream://%(1000,4000,450)">

上述铃音是中国标准的电话回铃音,更多的铃音可以在XSwitch 默认的配置文件中找到(https://git.xswitch.cn/xswitch/xswitch/src/branch/master/conf/vanilla/vars.xml),如上述链接中的cn-ring就代表中国回铃音、us-ring就代表美国回铃音。

一般的定义是%(ontime,offtime,freq1,freq2),ontime(通)和offtime(断)的单位是毫秒,freq1和freq2的单位是赫兹。

cn-ring的定义是%(1000,4000,450),表示 1 秒通,4 秒断,单频 450 赫兹。当然也可以写成%(1000,4000,450,0)。

要播放忙音非常容易,下面的例子播放一个忙音,参数为 350 毫秒通,350 毫秒断,频率为 450 赫兹:

代码语言:javascript
复制
<action application="playback" data="tone_stream://%(350,350,450)">

有时会碰到 700 毫秒通,700 毫秒断的忙音:tone_stream://%(700,700,450),跟 350 毫秒版本的相比显得比较悠长:

代码语言:javascript
复制
<action application="playback" data="tone_stream://%(700,700,450)">

下面这个例子加上loops=4参数,播放 4 个忙音:

代码语言:javascript
复制
<action application="playback" data="tone_stream://%(350,350,450);loops=4">

下面这个例子播放拨号音,也就是只有 60 秒通没有断:

代码语言:javascript
复制
<action application="playback" data="tone_stream://%(60000,0,450)">

还可以直接播放 dtmf,dtmf 的范围当然是 0 到 9,再加上 abcd*#,下面的例子播放 dtmf1234

代码语言:javascript
复制
<action application="playback" data="tone_stream://1234">

下面是一个组合的例子,先播放 5 秒的拨号音,接着播放 dtmf1234,最后播放回铃音:

代码语言:javascript
复制
<action application="playback" data="tone_stream://%(5000,0,450);1234;%(1000,4000,450)">

上面的例子提到了%,loops,以及dtmf,除这些之外,TGML 还支持下面的变化:

  • c=x 设置通道数。
  • r=x 设置采样率。
  • d=x 设置默认 tone 的持续时长(ontime),单位是毫秒。
  • w=x 设置默认 tone 的静音时长(offtime),单位是毫秒。
  • v=x 设置默认音量(范围是-63.0dB 至 0.0dB)。
  • >=x 设置音量递减的步长,单位是毫秒。
  • <=x 设置音量递增的步长,单位是毫秒。
  • +=x 设置每个间隔要增加或者减少的 dB 数。
  • l=x 设置脚本中每个 tone 重复的次数。
  • L=x 设置整个脚本重复的次数。

比如:

代码语言:javascript
复制
<action application="playback" data="tone_stream://v=-7;>=2;+=.1;%(1400,0,350,440)">

初始音量是-7dB,每隔 2 毫秒音量递减,每次递减 0.1dB。这是一个音量逐渐变低的拨号音。

L跟loops作用类似,但loops节约内存。

L和l可以通过下面的例子做对比就很清楚它们之间的区别:

代码语言:javascript
复制
<action application="playback" data="tone_stream://1234;L=2">
<action application="playback" data="tone_stream://1234;l=2">

L=2把 dtmf1234 全部播放 2 遍,而l=2仅仅是把最后一个 dtmf4 播放 2 遍。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-02-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeSWITCH中文社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档