Giter Club home page Giter Club logo

network-emulator's Introduction

About

Network-emulator is a simple utility intended to test how network losses affects speech quality in VoIP-based applications. Experimenter can set up loss rate, bandwidth, encoder options and select one of the packet loss suppression algorithm.

In fact this tool is quite small and extensively uses the power of the PJSIP library.

Emulator can help quickly obtain these measures:

  • compare encoding quality for different codecs and codecs modes.
  • estimate the impact of the loss level and distribution on the speech quality.
  • estimate the impact of the different PLC algorithms on the speech quality.

Quality estimation may be carried out subjectively but better way is to use automatic tests such as PESQ (reference implementation can be found at ITU-T official site). Network emulator only helps to obtain reference and degraded speech samples.

Compiling

First before you need to download and build PJSIP library. To use some proprietary codecs as G.729 and/or G.723.1 follow these instructions.

It seems that you already have downloaded this ulility from network emulator github repository.

After that set up enviromenent variable PJBASE in order to specify location of the PJSIP library or run make command with this variable set up:

make PJBASE=... all

PJSIP libraries are compiled in statically, so in order to deploy or use just built application you don't need to modify your LD_LIBRARY_PATH or include some parts of PJSIP in the distributed package. However Intel IPP codecs usage requires correctly adjusted environment.

Command-line options

  • -i|--input-file <filename1.wav> -- path to input (reference) file
  • -o|--output-file <filename2.wav> -- path to output (degraded) file
  • -c|--codec <CODEC_NAME> -- codec name, i.e. speex/8000 or G729
  • -l|--loss <lost_pct> -- loss rate (float, %)
  • --p00 <lost_pct> -- p00 (lost probability when previous packet was lost, float, %)
  • --p10 <lost_pct> -- p10 (lost probability when previous packet was received, float, %)
  • -f|--fpp <fpp> -- packetization coefficient (number of codec frames per one RTP packet)
  • -p|--plc empty|repeat|smart|noise -- PLC algorithm (see below)
  • -q|--speex-quality <value> -- Speex quality (0-10) (works with speex algorithm only obviously)
  • --log-level <0..6> -- Log level where 0 means "log nothing" and 6 means "log everything"

This list can be not exhaustive. In order to obtain more comprehensive help refer to emulator(1) man page.

Packet loss concealment algorithms

There is a number of packet loss concealment algorithms.

  • empty -- no PLC, lost frames replaced with empty ones
  • repeat -- lost frames replaced wih last received frame
  • smart -- "smart" PLC, based on WSOLA algorithm or (for Speex) built-in speex PLC methods
  • noise -- replace lost frames with white noise

network-emulator's People

Contributors

imankulov avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.