简介
基于7628 路由芯片做实时语音聊天。mtk原厂sdk i2s 驱动有bug。不能同时读写。打上patch就好了。并且7628 的cpu性能太差了,不能用speex opus的编码。 只能用G.711/G.723 。speex的消噪和回声抑制效果还不错。能很快收敛。
做了两个版本的程序,一个使用portaudio,一个使用alsa。 7628 性能太低才逼不得以,从portaudio 切换成了直接使用alsa。
回声抑制,speex需要Audacity 慢慢分析,调教。只要调教好,绝对能抑制。
传输基于udp中央服务器转发。总之很完美。
程序执行
rvoice 1.0.0
Usage: rvoice [OPTIONS]...
-h, --help Print help and exit
-V, --version Print version and exit
--config=STRING config files (default=`/etc/rvoice.cfg')
--nic=STRING eth (default=`eth0')
--uuid=STRING tranport group
--storefile store file (default=off)
--devs list devices (default=off)
--complexity=INT complexity(1-10) (default=`5')
--sample_rate=INT sample rate(8000,12000,16000,24000,48000)
(default=`8000')
--frames_per_buffer=INT frames per buffer(120,240,480,960,1920,2880)
(default=`960')
--buffer_max=INT buffer max count (default=`10')
--buffer_count=INT buffer count 1s=345 (default=`4')
--buffer_threshold=INT buffer buffer_threshold (default=`2')
--channels=INT channels (default=`1')
--inputdevice=STRING input device index (default=`default')
--outputdevice=STRING output device index (default=`default')
--period_size=INT period size (default=`1024')
--buffer_mul=INT buffer multi (default=`16')
--code=INT enable code(0: none 1: opus 3: G.723 24kbps 4:
G.721 32kbps 5: G.723 40kbps) (default=`3')
--aec enable aec (default=on)
--aeclen=INT aec length (default=`10')
--aecdelay=INT aec delay (default=`0')
--denoise=INT denoise (default=`1')
--denoise_value=INT denoise (default=`-15')
--udpserver=STRING udp server addr (default=`127.0.0.1')
--udpport=STRING udp server port (default=`10000')
--heartbeat=INT udp heartbeat (default=`30')
--direct udp direct (default=off)
--isserver isserver (default=off)
--daemon daemon mode (default=off)
-d, --debug=INT debug level (default=`4')