首页 > Android, Linux > Nexus 4手机使用VoIP GSM网关时通话质量的改善

Nexus 4手机使用VoIP GSM网关时通话质量的改善

2015年2月7日 LTNS     访问次数 65 发表评论 阅读评论

之前在 Nexus 4 手机上通过 Asterisk + chan_dongle 搭建的 VoIP GSM网关(试过 RasPBX平台PIAF平台)拨打电话时发现通话质量不佳,主要表现为在手机上使用 SIP SoftPhone软件比如 Zoiper,对方能听到自己讲话的明显回音(Nexus 4手机这头没这个问题),而在SIP/IAX分机相互之间的通话就没这个回音问题,Zoiper软件默认已勾选 echo cancellation选项。

参考文章1 分析了造成回音问题的几个原因,对其中一个的描述如下

Within the caller's telephone; a certain amount of the signal from the microphone is fed straight back to the earpiece, called "sidetone." This is often done by design (see also echo and sidetone ), and in any case, is not a problem here - more on why later. A particular special-case of this is a poorly-configured analogue (eg TDM400P) card - for example, the default (FCC) is not suitable for the UK.

 

于是在 Nexus 4手机上试着通话时静音,果然对方就不再听到自己讲话时的回音了。也就是说 Zoiper 这个 SIP客户端的 echo cancellation功能无效,以致于对方讲话时会通过我这里 Nexus 4手机的听筒漏音至话筒,再传递回去被对方听到;而手机硬件本身一般都有回音消除功能,所以在 Nexus 4 / Zoiper 这头讲话不会在对方的手机那里产生漏音效果。

参考文章2 里也有人遇到同样的问题,根据提示改用 CSipSimple 软件后问题就解决了,不过缺点是该软件不支持 IAX协议。
CSipSimple_echo_cancellation

 
另外,其实 Nexus 4手机已内建 SIP协议的网络电话功能(在系统自带的 电话软件>设置>通话设置 中可以看到)
nexus4_builtin_sip_phone

不过系统缺少回音消除等模块,最新的 lollipop 5.0 仍未解决这个问题,好在 参考文章3 里有人提出了解决办法,即,在手机系统文件 /system/vendor/etc/audio_effects.conf 的末尾添加如下内容

pre_processing {
  voice_communication {
    aec {}
    ns {}
   } 
}

注:Nexus 4需要已root

经测试有效(只在 Nexus 4 / KitKat 4.4.4系统上测试过 ),不过对方使用某些型号的手机时还是能听到自己讲话的回音(比如红米,改用三星 i959等手机就正常),所以目前 Nexus 4还是在用 CSipSimple

 
 

参考文章
1. http://www.voip-info.org/wiki/view/Causes+of+Echo
2. https://code.google.com/p/android/issues/detail?id=41626
3. https://code.google.com/p/android/issues/detail?id=62218

 

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.
12 / 3 = (必填)