Skip to main content

audio algorithms to compute and test audio quality of speech enhencement

Project description

Audio test libs to compute audio quality and 3A performance by objective metrics
pcm,wav inputfiles is allowed,support different samplerate (invalid params are simply corrected to valid ones)



# How to install ?

*******************************************************

#Install with pip:

simply use pip to install this toolkit

"pip install algorithmLib"

********************************************************
	
# Build and Install with git:

first step:

git clone https://g.hz.netease.com/majianli/audiotestalgorithm

second step:

simply run move2sys.prefix.bat before you building the project

**************************************************************


# How to use?

    #just see ./demos/ 	
def compute_audio_quality(metrics,testFile=None,refFile=None,cleFile=None,samplerate=16000,bitwidth=2,channel=1,refOffset=0,testOffset=0,,maxComNLevel =-48.0,speechPauseLevel=-35.0,audioType=0,
                      aecStartPoint=0,aecTargetType=0,aecScenario=0,rmsCalsection=None):

	"""
	:param metrics: G160/P563/POLQA/PESQ/STOI/STI/PEAQ/SDR/SII/LOUDNESS,
	# G160 no samplerate limiting,  WAV/PCM input , three inputfiles :clean,ref,test no duration limiting; 
	# P563 8000hz( only 8k spectrum is being calculated), WAV/PCM input , single inputfile, duration < 20s;
	# POLQA nb mode  8k  swb mode 48k :WAV/PCM input , 2 inputfiles: ref,test: duration < 20s;
	# PESQ nb mode 8k   wb mode  16k ,WAV/PCM input ,2 inputfiles: ref,test: duration < 20s;
	# STOI no samplerate limiting; 2 inputfiles: ref,test, no duration limiting;
	# STI >8k(only 8k spectrum is being calculated), WAV/PCM input , 2 inputfiles: ref,test ,duration > 20s;
	# PEAQ no samplerate limiting, WAV/PCM ,2 inputfiles: ref, test , no duration limiting;
	# SDR no samplerate limiting; WAV/PCM input ,2 inputfiles:ref,test: no duration limiting;
    # MATCH no samplerate limiting; WAV/PCM input;3 inputfiles:ref,test,out; no duration limiting;
    # MUSIC no samplerate limiting;WAV/PCM input;2 inputfiles:ref,test;no duration limiting;
    # TRANSIENT no samplerate limiting; WAV/PCM input;3 inputfiles: cle,noise,test; no duration limiting;
	# GAINTABLE , no samplerate limiting; WAV/PCM input;2 inputfiles: ref, test ; specific files;
	# ATTACKRELEASE  no samplerate limiting; WAV/PCM input;2 inputfiles: ref, test ; specific files;
	# MUSICSTA no samplerate limiting; WAV/PCM input;2 inputfiles: ref, test ;  no duration limiting;
    # AGCDELAY no samplerate limiting; WAV/PCM input 2 inputfiles锛歳ef ,test; no duration limiting;
    # MATCHAEC no samplerate limiting; WAV/PCM input;3 inputfiles:ref,mic,test;  no duration limiting;
    # ELRE no samplerate limiting; WAV/PCM input;3 inputfiles:mic,ref,test; no duration limiting;
    # SLIENCE no samplerate limiting; WAV/PCM/MP4 input;1 input file锛歵est; no duration limiting;
    # FORMAT no samplerate limiting; WAV/MP4 input;1 input file锛歵est; no duration limiting;
    # AECMOS no samplerate limiting; WAV/PCM input ;3 inputfiles:mic,ref,test ; no duration limiting;
    # AIMOS no samplerate limiting; WAV/PCM input ;1 input file: test; no duration limiting;
    # TRMS no samplerate limiting; WAV/PCM input ;1 input file:test; no duration limiting;
    # ARMS no samplerate limiting; WAV/PCM input ;1 input file:test; no duration limiting;
    # NOISE no samplerate limiting; WAV/PCM input ;1 input file:ref銆乼est; no duration limiting;
	there are different params for different metrics,if params you speend is valid,they will be corrected to valid ones while calculating
	:param testFile: the files under test ,
	:param refFile: the reference file ,FR metrics need POLQA/PESQ/PEAQ
	:param cleFile: clean file ,G160 need 
    :param noiseFile noise file,option, TRANSIENT NOISE
    :param outFile out file,option, MATCH SIG 
	:param samplerate: samplerate,option ,pcmfile  default = 16000
	:param bitwidth: bitwidth, option,pcmfile  default = 2
	:param channel: channels, option,pcmfile  default = 1
	:param refOffset: offset for ref file,option
	:param testOffset: offset for test file ,option
    :param maxComNLevel: G160
    :param speechPauseLevel G160
    :param audioType  0:speech 1:music MATCH/GAINTABLE
    :param aecStartPoint  AECMOS
    :param aecTargetType  0:Chiness 1:English 2:Single Digit 3:Music  MATCHAEC/ELRE
    :param aecScenario aec mos     0:'doubletalk_with_movement', 1:'doubletalk', 2:'farend_singletalk_with_movement', 3:'farend_singletalk', 4:'nearend_singletalk'
    :param rmsCalsection TRMS/ARMS
	:return
	"""
	
#  PESQ example
src = "a.pcm"
test = "b.pcm"

score = compute_audio_quality('PESQ',testFile=test,refFile=src,samplerate=16000)


or

src = "a.wav"
test = "b.wav"

score = compute_audio_quality('PESQ',testFile=test,refFile=src)


#  G160 example

src = "a.wav"
test = "b.wav"
cle = "c.wav"
tnlr,nplr,snri,dsn  = compute_audio_quality("G160",testFile=test,refFile=src,cleFile=cle)

or 

src = "a.pcm"
test = "b.pcm"
cle = "c.pcm"

tnlr,nplr,snri,dsn  = compute_audio_quality("G160",testFile=test,refFile=src,cleFile=cle,samplerate=48000)


#p563 example

test = "a.wav"

Mos,SpeechLevel,Snr,NoiseLevel = compute_audio_quality('P563',testFile=test)

or 

test = "a.pcm" 

Mos,SpeechLevel,Snr,NoiseLevel = compute_audio_quality('P563',testFile=test,samplerate=32000)

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

AlgorithmLib-3.0.12.tar.gz (14.3 MB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page