Delete DNSMOS/dnsmos.py
This commit is contained in:
Родитель
0eb638ec31
Коммит
591184a9fc
|
@ -1,65 +0,0 @@
|
|||
import argparse
|
||||
import glob
|
||||
import json
|
||||
import os
|
||||
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
import requests
|
||||
import soundfile as sf
|
||||
import librosa
|
||||
|
||||
from urllib.parse import urlparse, urljoin
|
||||
|
||||
# URL for the web service
|
||||
SCORING_URI_DNSMOS = 'https://dnsmos.azurewebsites.net/score'
|
||||
SCORING_URI_DNSMOS_P835 = 'https://dnsmos.azurewebsites.net/v1/dnsmosp835/score'
|
||||
# If the service is authenticated, set the key or token
|
||||
AUTH_KEY = '<Insert the key we provide in email here>'
|
||||
|
||||
|
||||
# Set the content type
|
||||
headers = {'Content-Type': 'application/json'}
|
||||
# If authentication is enabled, set the authorization header
|
||||
headers['Authorization'] = f'Basic {AUTH_KEY }'
|
||||
def main(args):
|
||||
audio_clips_list = glob.glob(os.path.join(args.testset_dir, "*.wav"))
|
||||
scores = []
|
||||
for fpath in audio_clips_list:
|
||||
audio, fs = sf.read(fpath)
|
||||
if fs != 16000:
|
||||
print('Only sampling rate of 16000 is supported as of now')
|
||||
audio = librosa.core.resample(audio, fs, 16000)
|
||||
data = {"data": audio.tolist(), "filename": os.path.basename(fpath)}
|
||||
input_data = json.dumps(data)
|
||||
# Make the request and display the response
|
||||
if args.method == 'p808':
|
||||
u = SCORING_URI_DNSMOS
|
||||
else:
|
||||
u = SCORING_URI_DNSMOS_P835
|
||||
resp = requests.post(u, data=input_data, headers=headers)
|
||||
score_dict = resp.json()
|
||||
score_dict['file_name'] = os.path.basename(fpath)
|
||||
scores.append(score_dict)
|
||||
|
||||
df = pd.DataFrame(scores)
|
||||
if args.method == 'p808':
|
||||
print('Mean MOS Score for the files is ', np.mean(df['mos']))
|
||||
else:
|
||||
print('Mean scores for the files: SIG[{}], BAK[{}], OVR[{}]'.format(np.mean(df['mos_sig']),np.mean(df['mos_bak']),np.mean(df['mos_ovr'])))
|
||||
|
||||
if args.score_file:
|
||||
df.to_csv(args.score_file)
|
||||
|
||||
|
||||
|
||||
if __name__=="__main__":
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--testset_dir", required=True,
|
||||
help='Path to the dir containing audio clips to be evaluated')
|
||||
parser.add_argument('--score_file', help='If you want the scores in a CSV file provide the full path')
|
||||
parser.add_argument('--method', default='p808', const='p808', nargs='?', choices=['p808', 'p835'],
|
||||
help='Choose which method to compute P.808 or P.835. Default is P.808')
|
||||
args = parser.parse_args()
|
||||
main(args)
|
||||
|
Загрузка…
Ссылка в новой задаче