我正在尝试改变 Asterisk 的音量。有几个应用程序可以从中受益。其中大部分是增加但也有一些场景我希望减少低于默认值的音量。
我知道有人SET(VOLUME(TX)=10)
在有人呼叫他的毫瓦线时使用它来实现非常逼真的 1004 Hz 测试音。
他还告诉我,他不确定,但他认为“3”是 TX 和 RX 的正常音量。我找不到任何文件来证实或否认这一点。但我想做一个简单的测试:
[mf] ; This is "supposed" to increase the transmit volume (what the caller would hear), execute a subroutine, and then "reset" the channel volume back to normal
exten => start,1,SayAlpha(A)
same => n,SayAlpha(A)
same => n,SayAlpha(A)
same => n,SET(VOLUME(TX)=1)
same => n,GoSub(mfer,start,1(${ARG1}))
same => n,SayAlpha(A)
same => n,SayAlpha(A)
same => n,SET(VOLUME(TX)=0.4)
same => n,SayAlpha(A)
same => n,SayAlpha(A)
same => n,SET(VOLUME(TX)=3) ; return volume to original loudness ** is the original volume 3?
same => n,SayAlpha(A)
same => n,SayAlpha(A)
same => n,Return()
我只是听了听“A”数字,看看它们是否变大了或变小了。
令我惊讶的是,唯一的区别是最后 2 个声音听起来更响亮!前 6 个听起来都一样!
这告诉我“正常”频道音量不是 3 - 它一定是 2 或 1,也可能是 1。
而且 0.4 并没有使通道变得更柔和,所以这让我相信 1 是最小的可能值。
那么,是否可以将 Asterisk 中的发送或接收音量调得比默认音量小一些?似乎不支持小数,所以我现在不知道该怎么办。
答案1
简短回答:
要降低音量,请使用小于或等于的负整数-2
。例如
same => n,SET(VOLUME(TX)=-4)
长答案:
免责声明:我的发现是基于阅读星号源代码。我没有构建或跟踪代码,只是阅读了它,有很大的误解空间。
- 这默认设置为零
0
。它禁用调用音量调节例程。 - 要增加音量,请将调整设置为大于或等于的整数
2
。 - 要降低音量,请将调整设置为小于或等于的整数
-2
。 - 调整以短整数形式应用。将调整设置为十进制数最多可能会将其转换为短整数,但我不知道那里到底发生了什么。
- 使用调整值
-1
或1
对最终音量没有影响,但浪费 CPU 周期(原因见下文),使用零0
代替-1
或1
。 - 在同一通道+方向(方向为 TX 或 RX)上多次设置音量调节不会产生复合效果。每次执行设置音量都会清除该通道+方向上的先前调节并设置新的调节。
推理:
- 最终的调整是存储为 int并应用为短的。 我怀疑尝试使用小数(例如“1.5”或“0.1”)是没有意义的。坚持使用整数。
- 零点调整方式无调整(默认)
- 当调整积极的那么每个样本倍增通过调整并剪裁为16位有符号整数。
- 当调整消极的那么每个样本分为由模数
abs(adjustment)
。
如果我的理解正确的话:
; Reduce each sample to 50% the original value
same => n,SET(VOLUME(TX)=-2)
; Reduce each sample to 20% the original value
same => n,SET(VOLUME(TX)=-5)
; Reduce each sample to 10% the original value
same => n,SET(VOLUME(TX)=-10)
; Disable volume adjustments
same => n,SET(VOLUME(TX)=0)
; Waste CPU cycles by calling functions only to multiply by 1, the adjustment value of zero would achieve the same more efficiently
same => n,SET(VOLUME(TX)=1)
; Increase each sample to 200% of the original value
same => n,SET(VOLUME(TX)=2)
请注意,感知到的体积变化和样本缩放是大概不是同一件事,例如,将每个样本加倍可能不会使感知到的体积变化加倍。
答案2
VOLUME 功能运行正常。
请确保您的端点(软件电话或硬电话)没有“标准化声音水平”之类的功能。