Voice Over IP Developing IPHONE Jeremy Stanley CS 460 section 1
VoIP Advantages No long distance fees No dedicated circuit More efficient use of networks 64 Kbps raw audio vs. 13 Kbps compressed Data need not be transmitted during silence
VoIP Issues Latency Packetization Network jitter Quality of Service Real-time requirements Addressing Issues IPv6 is a pratical necessity
Voice Encoding PCM (pulse code modulation) ADPCM - adaptive delta PCM Fast 4:1 Compression, Good quality Vocoders (LPC, CELP, GSM) Slower, 12-30x compression common Voice only - Music does not work well
Introduction to IPHONE Win32 application Uses Windows Multimedia and Sockets APIs for audio and communication Two-way, full duplex voice channel (PC to PC) Runs over UDP or TCP, supports data compression and silence detection
IPHONE Design
Screen Shot
The Naïve Algorithm Receive thread Receive a packet Decode and play audio Return to step 1 Send thread Record audio Encode, packetize, and send Return to step 1
Problems Sounds like talking into a fan Latency quickly rises to intolerable levels
Timing Issues
Solutions Asynchronous sound processing Encode and send previous packet while recording current packet Receive and decode next packet while playing current packet At least two send and receive buffers required
Revised Algorithm
Network Jitter The double-buffered solution last described works well on a LAN Delay still accumulates when receive buffer empties due to delayed packets Increasing receive buffer only does so much - it will eventually be exhausted
Jitter Solutions Drop late packets Imperceptibly increase playback speed Shorten delays between words Use silence detection IPHONE does this
Silence Detection Do not send audio chunks whose maximum amplitude is below a silence threshold Phone conversations are 60% silence Turns voice into bursty data
Comfort Noise Total silence construed as dead line Substitute pre-recorded "open mic" Play low-volume white noise Record and repeat periods of silence during conversation
Demonstration/Questions