web-dev-qa-db-ja.com

アスタリスクの送受信音量を通常より下げることはできますか?

アスタリスクの音量を変えて遊んでいます。私がこれから利益を得るであろういくつかのアプリケーションがあります。それらのほとんどは増加ボリュームですが、私が探していたシナリオもいくつかあります減少デフォルトよりもボリュームが小さいです。

誰かがSET(VOLUME(TX)=10)を使用して、誰かがミリワットの回線を呼び出したときに、非常にリアルな1004Hzのテストトーンを実現していることを私は知っています。

彼はまた私に言った、彼は確信が持てなかった、しかし彼は「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が可能な最小値であると私に信じさせます。

それで、送信または受信ボリュームをアスタリスクのデフォルトよりもソフトにすることは可能ですか?小数はサポートされていないようですので、今どこに向かうべきかわかりません。

1
InterLinked

簡単な答え:-2以下の負の整数を使用してください。例えば.

_same => n,SET(VOLUME(TX)=-4)
_

長い答え:

VOLUME関数のアスタリスクドキュメントには、調整値の有効範囲とそれらの値の意味については記載されていません。

私はアスタリスクのソースをあまり完全に読んでいませんでした、そしてそれはそうです

  • 調整は最終的に intとして格納 になり、 short として適用されます。 Isuspect小数を使おうとしても意味がありません。 「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倍にしても、知覚される音量の変化は2倍にならない場合があります。

私の調査結果はソースコードに基づいています。私はコードを作成したりトレースしたりせず、読んだだけで、誤解の余地がかなりあります。

1
AnyDev

VOLUME関数は問題なく動作します。

エンドポイント(ソフトフォンまたはハードフォン)に「サウンドレベルの正規化」などの機能がないことを確認してください。

0
arheops