VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Низкое качество звука

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

kiralex
Сообщения: 23
Зарегистрирован: 08 дек 2013, 21:52

Низкое качество звука

Сообщение kiralex »

Пытаюсь настроить Asterisk с нуля, столкнулся с проблемой что не могу самостоятельно избавиться проблем со звуком
1) паразитное эхо у звонящего с SIP телефона через SIP провайдера.
2) Легкое эхо при звонках через VOIP шлюз D-Link DVG-6004S
3) Трески, пропадания звука
4) Большие задержки.
5) Бывает еще эффект что когда говорит один человек второго не слышно.

В наличие SIP Телефоны Cisco SPA514G,SPA303,SPA301 Yealink W52P. Софтфоны X-Lite,QuteCom, Android SIP, CSipSimple
При звонке просто на Asterisk MOH, IVR или ECHO звук приемлемый но не идеал.
Самое худшее звучание когда звонят с мобильных операторов через SIP провайдера.
Подключал Yealink W52P напрямую к SIP провайдеру звук шикарный, значит проблема в моих настройках.

Использовал Астериски под FreeBSD 9.2 x64 из портов Asterisk 1.8.23.1, Debian 7.2.0 x64 Asterisk 1.8.33.1(Если не вру).
Сервер ставил как на Citrix XENServer 6.2 так и на желето Intel Atom/Pentium D всегда x64.

Решил попробовать Elastix 2.4.0 x32 Шикарно работает но он мне неудобен я уже привык к CLI и хотелось бы вылечить от глюков мою версию.
Сейчас есть подозрения на то что 64bit работает плохо а 32bit работает хорошо ставлю FreeBSD 9.2 i686.
Долгое время убил на настройки NAT\QoS JitterFilter\Кодеки перебивал всевозможные опции sip.conf. Даже настраивал по аналогии с Elastix в sip.conf, результат был один плохой звук.
Я уже грешу на диалплан хотя он работает то как раз нормально.

Может нужен какой либо тюнинг ядра ОС?

Вот мои основные конфиги, выкладываю основную выжимку а не все простыни.

Код: Выделить всё

;
; sip.conf
;

[general]
bindaddr        = %LOCAL_IP%
bindport        = 5060
localnet        = %LOCAL_SUBNET%/%LOCAL_SUBMASK%
externip        = %EXTER_IP%
nat             = no
directmedia     = no
qualify         = yes
allowoverlap    = yes
autoframing     = no
context         = from_general
allowguest      = no
alwaysauthreject = yes
disallow        = all
allow           = alaw
dtmfmode        = rfc2833
language        = ru
highpriority    = yes

register => %USERNAME%:%PASSWORD%@%PROV_HOST%:5060/%EXTERN_NUM% 

[TRUNKNAME] ; SIP провайдер
type            = friend
host            = %PROV_HOST%
defaultuser     = %USERNAME%
secret          = %PASSWORD%
context         = from_trunk
disallow        = all
allow           = alaw ; g729; поддерживает alaw, g729 и ulaw
insecure        = invite
canreinvite     = no
deny            = 0.0.0.0/0
permit          = %PROV_HOST%/32
nat             = yes
dtmfmode        = rfc2833

[dlink_fxo] ; D-Link DVG-6004S
type            = friend
host            = dynamic
context         = from_dlink
secret          = %PASSWORD%
dtmfmode        = rfc2833
disallow        = all
allow           = alaw
deny            = 0.0.0.0/0
permit          = %GATE_IP%/32
nat             = no

[fxo_1](dlink_fxo) ; Внутренний 680
[fxo_2](dlink_fxo) ; Внутренний 697
[fxo_3](dlink_fxo) ; Внутренний 650
[fxo_4](dlink_fxo) ; Внутренний 665

[default](!) ; Шаблон аккаунтов телефонов
secret          = %VERY_STRONG_PASSWORD%
callgroup       = 1
pickupgroup     = 1
qualify         = yes
nat             = no
type            = friend
host            = dynamic
context         = from_phones
disallow        = all
allow           = alaw
deny            = 0.0.0.0/0
permit          = %LOCAL_SUBNET%/22
dtmfmode        = rfc2833
canreinvite     = no

[external](!,default)    ; Разрешает подключение откуда угодно
permit          = 0.0.0.0/0.0.0.0
disallow        = all
nat             = yes
canreinvite     = no
allow           = alaw,ulaw,gsm

[0051](default) ; Локальная Трубка
fullname        = %CALLER_NAME%
cid_number      = %CALLER_NUM%
secret          = %PASSWORD%

Код: Выделить всё

;
; extensions.conf
;

[general]
static          = yes
writeprotect    = yes
autofallthrough = no

[globals]

; +--------------------------------------------------------------+
; | Входящие звонки                                              |
; +--------------------------------------------------------------+

[from_phones] ; Входящий звонок с внутреннего телефона
include = testing
include = to_phones
include = to_external

[from_dlink] ; Входящий звонок с VOIP Шлюза
exten = 680,1,NoOp() ; D-LINK DVG-6004S FXO_1
exten = 680,n,Macro(support-queue)
exten = 680,n,Hangup()

exten = 697,1,NoOp() ; D-LINK DVG-6004S FXO_2
exten = 697,n,Macro(support-queue)
exten = 697,n,Hangup()

exten = 650,1,NoOp() ; D-LINK DVG-6004S FXO_3
exten = 650,n,Macro(support-queue)
exten = 650,n,Hangup()

exten = 665,1,NoOp() ; D-LINK DVG-6004S FXO_4 - KIRALEX
exten = 665,n,Dial(SIP/0055&SIP/0059&SIP/0058)
exten = 665,n,Hangup()

[from_trunk] ; Входящий звонок с провайдера
include = to_phones
exten = %EXTERN_NUM%,1,NoOp()
exten = %EXTERN_NUM%,n,Goto(voicemenu_support,s,1)
exten = %EXTERN_NUM%,n,Hangup()

; +--------------------------------------------------------------+
; | Исходящие звонки                                             |
; +--------------------------------------------------------------+

[to_phones] ; Исходящий звонок на внутренний телефон

exten = _00XX,1,NoOp() ; Набор на внутренние телефоны 4 цифры
exten = _00XX,n,Macro(monitor)
exten = _00XX,n,Dial(SIP/${EXTEN},120,Tt)
exten = _00XX,n,Hangup()

[to_external] ; Исходящий звонок на внешнюю линию
exten = _XXX,1,NoOp() ; Звонок на внутреннюю АТС, любой трехзначный номер
exten = _XXX,n,Macro(monitor)
exten = _XXX,n,Dial(SIP/dlink_fxo/${EXTEN},,Tt)
exten = _XXX,n,Hangup()

exten = _8XXXXXXXXXX,1,NoOp() ; Звонок начинает на 10-ти значный номер который начинается на 7 или 8
exten = _8XXXXXXXXXX,n,Macro(monitor)
exten = _8XXXXXXXXXX,n,Dial(SIP/TRUNKNAME/0${EXTEN})
exten = _8XXXXXXXXXX,n,Hangup()

exten = _+7XXXXXXXXXX,1,NoOp() ; Звонок начинает на 10-ти значный номер который начинается на 7 или 8
exten = _+7XXXXXXXXXX,n,Macro(monitor)
exten = _+7XXXXXXXXXX,n,Dial(SIP/TRUNKNAME/08${EXTEN:2})
exten = _+7XXXXXXXXXX,n,Hangup()

exten = _XXXXXXXXXX,1,NoOp() ; Звонок без указания 8-ки
exten = _XXXXXXXXXX,n,Macro(monitor)
exten = _XXXXXXXXXX,n,Dial(SIP/TRUNKNAME/08${EXTEN})
exten = _XXXXXXXXXX,n,Hangup()

exten = _XXXXXXX,1,NoOp() ; Звонок на городские 495 без указания 495
exten = _XXXXXXX,n,Macro(monitor)
exten = _XXXXXXX,n,Dial(SIP/TRUNKNAME/08495${EXTEN:1})
exten = _XXXXXXX,n,Hangup()


; +--------------------------------------------------------------+
; | Другое                                                       |
; +--------------------------------------------------------------+

[macro-monitor]    ; Макрос запись звонков
exten = s,1,Set(MONITOR_FILE=/var/spool/asterisk/monitor/${UNIQUEID})
exten = s,n,Playback(beep)
exten = s,n,MixMonitor(${MONITOR_FILE}.wav,b)

[macro-support-queue]
exten = s,1,NoOp() ; Изза какогото бага не работают нормально пинальти поэтому такой костыль
exten = s,n,Queue(support_first,tn)
exten = s,n,Queue(support_second,t)
exten = s,n,Hangup()

; +---------------------------------------------------+
; | Для тестирования                                  |
; +---------------------------------------------------+
[testing]
exten = 00,1,NoOp() ; (Press '#' to done) ; Эхотест
exten = 00,n,Answer()
exten = 00,n,Background(demo-echotest)
exten = 00,n,Echo()
exten = 00,n,Playback(demo-echodone)

exten = 01,1,NoOp() ; Музыка
exten = 01,n,Answer()
exten = 01,n,MusicOnHold(default)
exten = 01,n,Hangup()

exten = 02,1,NoOp() ; Очередь SUPPURT
exten = 02,n,Macro(monitor)
exten = 02,n,Macro(support-queue)
exten = 02,n,Hangup()

exten = 03,1,NoOp() ; Тестовый вызов на мой мобильный номер через шлюз
exten = 03,n,Dial(SIP/dlink_fxo/9%MY_PHONE_NUM%)
exten = 03,n,Hangup()

exten = 04,1,NoOp() ; Тестовый вызов на мой мобильный номер через SIP
exten = 04,n,Dial(SIP/TRUNKNAME/0%MY_PHONE_NUM%)
exten = 04,n,Hangup()

exten = 06,1,NoOp() ; Echo test Skype like
exten = 06,n,Set(MONITOR_FILE=/var/spool/asterisk/monitor/${UNIQUEID})
exten = 06,n,Answer()
exten = 06,n,Playback(demo-echotest)
exten = 06,n,Playback(dictate/record_mode)
exten = 06,n,Playback(digits/10)
exten = 06,n,Playback(seconds)
exten = 06,n,Playback(beep)
exten = 06,n,MixMonitor(${MONITOR_FILE}.alaw,a)
exten = 06,n,Wait(10)
exten = 06,n,StopMixMonitor()
exten = 06,n,Playback(beep)
exten = 06,n,Playback(dictate/playback_mode)
exten = 06,n,Playback(beep)
exten = 06,n,Playback(${MONITOR_FILE})
exten = 06,n,System(/bin/rm ${MONITOR_FILE}.alaw)
exten = 06,n,Hangup()

exten = 07,1,NoOp()
exten = 07,n,Goto(voicemenu_support,s,1)
exten = 07,n,Hangup()


; Обработка ошибок
exten = i,1,Playback(pbx-invalid)
exten = i,n,Goto(voicemenu,s,Start)

exten = t,1,Playback(vm-goodbye)
exten = t,n,Hangup()

[voicemenu_support] ; Голосовое меню поддержки
include = to_phones

exten = s,1,NoOp()
exten = s,n,Answer()
exten = s,n,Set(TIMEOUT(digit)=2) ; Устанавливаем таймаут набора цифр
exten = s,n,Playback(calls-are-recorded)
exten = s,n,Macro(monitor)
exten = s,n,Background(dial-exten-tone) ; Если вы знаете внутренний номер обонента наберите его номер в тоновом режиме
exten = s,n(Start),NoOp()
exten = s,n,WaitExten(5)
exten = s,n,Playback(beep)
exten = s,n,Macro(support-queue)
exten = s,n,Hangup()

exten = i,1,Wait(1)
exten = i,n,Playback(pbx-invalid)
exten = i,n,Goto(s,Start)
exten = i,n,Hangup()

; EOF

Код: Выделить всё

;
; RTP Configuration
;

[general]
rtpstart		= 10100
rtpend			= 10200

; EOF

Код: Выделить всё

;
; modules.conf
;

[modules]
autoload = no

load => app_dial.so
load => app_echo.so
load => app_macro.so
load => app_mixmonitor.so
load => app_playback.so
load => app_queue.so
load => app_softhangup.so
load => app_verbose.so
load => app_setcallerid.so
load => app_system.so
load => func_callerid.so
load => res_musiconhold.so
load => res_fax.so
load => res_fax_spandsp.so
load => res_timing_pthread.so
load => pbx_config.so
load => chan_sip.so
;load => chan_iax2.so
load => res_rtp_asterisk.so
load => format_gsm.so
load => format_wav.so
load => format_wav_gsm.so
load => format_pcm.so
load => codec_gsm.so
load => codec_alaw.so
load => codec_ulaw.so
load => func_cdr.so
load => cdr_mysql.so
; EOF

Код: Выделить всё

;
; asterisk.conf
;

[files]
astctlpermissions => 700
astctlowner => asterisk
astctlgroup => asterisk
astctl => /var/run/asterisk/asterisk.ctl

[directories](!)
astetcdir => /etc/asterisk
astmoddir => /usr/lib/asterisk/modules
astvarlibdir => /usr/share/asterisk
astdbdir => /var/db/asterisk
astkeydir => /usr/share/asterisk
astdatadir => /usr/share/asterisk
astagidir => /usr/share/asterisk/agi-bin
astspooldir => /var/spool/asterisk
astrundir => /var/run/asterisk
astlogdir => /var/log/asterisk

[options]
documentation_language = ru_RU
internal_timing = yes

[compat]
pbx_realtime	= 1.6
res_agi			= 1.6
app_set			= 1.6

; EOF
Подскажите что я делаю не так?
Vlad1983
Сообщения: 4251
Зарегистрирован: 09 авг 2011, 11:51

Re: Низкое качество звука

Сообщение Vlad1983 »

аппаратная виртуализация на "атоме"...
оно само себя еле тянет

если и виртуалить на нем то под OpenVZ
ЛС: @rostel
kiralex
Сообщения: 23
Зарегистрирован: 08 дек 2013, 21:52

Re: Низкое качество звука

Сообщение kiralex »

аппаратная виртуализация на "атоме"..
Прошу прощения я неверно высказался.
Citrix XENServer 6.2 работает на Intel Xeon E3-1230 V2 3.3Ghz (В виртуальную машину был отдан максимальный приоритет 4 виртуальных ядра и 2Гб ОЗУ), гипервизор находится в локальной сети.
Также запускался Asterisk на Intel(R) Atom(TM) CPU D425 @ 1.80GHz с 2GB RAM, и Intel Pentium D (точную модель сейчас сказать не могу сервер выключен) 4Gb RAM

Качество звука в моей конфигурации было примерно одинаково плохое на всех 64bit платформах, на Debian под XEN немного получе.
Elastix сейчас запущен на XEN работает отлично, 2 виртуальных ядра и 2Гб ОЗУ средний приоритет.
ded
Сообщения: 15625
Зарегистрирован: 26 авг 2010, 19:00

Re: Низкое качество звука

Сообщение ded »

Кючевое слово для понимания - на 64bit платформах.
Почитайте про тайминг на 64bit платформах.
Aeooe
Сообщения: 143
Зарегистрирован: 28 авг 2013, 15:49

Re: Низкое качество звука

Сообщение Aeooe »

Я бы еще обратил внимание на сеть. В моем случае глюки с звуком были вызваны мертвым коммутатором и использованием некачественных wifi адаптеров. Нельзя исключать ошибки в конфигурации сети вцелом.
PS У меня стоит все на:
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.04
DISTRIB_CODENAME=precise
DISTRIB_DESCRIPTION="Ubuntu 12.04.3 LTS"
NAME="Ubuntu"
VERSION="12.04.3 LTS, Precise Pangolin"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu precise (12.04.3 LTS)"
VERSION_ID="12.04"
Проблем со звуком из за разрядности ОС не наблюдал.
Аватара пользователя
Wapo
Сообщения: 795
Зарегистрирован: 02 мар 2011, 17:53

Re: Низкое качество звука

Сообщение Wapo »

Зоопарк отдыхает: wifi, виртуалка, 64 - вы, уважаемый СВЯЗЬЮ занимаетесь или ГОРБАТОГО лепите? Или СВЯЗЬ, или ваш зоопарк. А так можете до посинения искать где же у вас потери.
Aeooe
Сообщения: 143
Зарегистрирован: 28 авг 2013, 15:49

Re: Низкое качество звука

Сообщение Aeooe »

Не вижу где у автора написано про wifi?
Если замечание мне - то у меня на реальном железе стоит. А в wifi не вижу ничего зазорного - нормальная точка + нормальный адаптер на клиенте = все нормально работает.
Аватара пользователя
SolarW
Сообщения: 1331
Зарегистрирован: 01 сен 2010, 14:21
Откуда: Днепропетровск, Украина

Re: Низкое качество звука

Сообщение SolarW »

Aeooe писал(а):А в wifi не вижу ничего зазорного - нормальная точка + нормальный адаптер на клиенте = все нормально работает.
Вы еще забыли упомянуть отсутствие соседей использующих WiFi :)
А то когда обстановка вокруг вас выглядит вот так примерно
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER: скан WiFi
WiFi01.PNG
то сказать "все нормально работает" будет слегка затруднительно :)
kiralex
Сообщения: 23
Зарегистрирован: 08 дек 2013, 21:52

Re: Низкое качество звука

Сообщение kiralex »

Я бы еще обратил внимание на сеть.
Я подключал телефон Yealink W52P к SIP провайдеру напрямую в обход Asterisk, трафик шел через локальную сеть и NAT при этом качество звука было отличное.
В данный момент на Elastix качество замечательное, сейчас провожу тесты на FreeBSD 32bit Asterisk 1.8.23.1. Проблема не зависит от WiFi подключения.

Имеет ли смысл ставить старые версии Asterisk 1.6, 1.4?
Возможно я не включил в загрузку системы какие либо модули или файлы которые очень важны при обработке звонков но не обязательны?
Например chan_local.so
Возможны ли проблемы если я не использую стандартные контексты defaults или local?

Список всех конфигурационных файлов которые имеются в директории /etc/asterisk, DAHDI не ставил, пока никаких плат не имеется.

Код: Выделить всё

agents.conf
asterisk.conf
ccss.conf
cdr.conf
cdr_mysql.conf
codecs.conf
dsp.conf
extensions.conf
features.conf
indications.conf
manager.conf
modules.conf
musiconhold.conf
queuerules.conf
queues.conf
res_fax.conf
rtp.conf
sip.conf
Некоторые конфиги появились в следствии моих разбирательств с качеством. codecs.conf dsp.conf
Аватара пользователя
Wapo
Сообщения: 795
Зарегистрирован: 02 мар 2011, 17:53

Re: Низкое качество звука

Сообщение Wapo »

DAHDI - это не ТОЛЬКО для поддержки аппаратных карт. Он много чего дает астеру.
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH