Pablo276 commited on
Commit
bc570b2
1 Parent(s): 6eee218

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +15 -34
app.py CHANGED
@@ -3,70 +3,51 @@ import numpy as np
3
  import soundfile as sf
4
  import gradio as gr
5
 
6
- def calculate_pesq(audio_ref, audio_deg):
7
- # Carica i file audio di riferimento e degradato
8
- ref_signal, ref_sample_rate = sf.read(audio_ref)
9
- deg_signal, deg_sample_rate = sf.read(audio_deg)
10
 
11
- # Assicurati che i file audio abbiano la stessa frequenza di campionamento
12
  if ref_sample_rate != deg_sample_rate:
13
- print("I due file audio hanno frequenze di campionamento diverse. Eseguo il resampling.")
14
  from scipy.signal import resample
15
  min_length = min(len(ref_signal), len(deg_signal))
16
  ref_signal = resample(ref_signal[:min_length], len(ref_signal))
17
  deg_signal = resample(deg_signal[:min_length], len(deg_signal))
18
 
19
- # Calcola il punteggio PESQ tra i due file audio
20
  pesq_score = pesq.pesq(ref_signal, deg_signal, ref_sample_rate)
21
-
22
  return pesq_score
23
 
24
- def calculate_snr(audio_ref, audio_deg):
25
- # Carica i file audio di riferimento e degradato
26
- ref_signal, _ = sf.read(audio_ref)
27
- deg_signal, _ = sf.read(audio_deg)
28
 
29
- # Calcola l'SNR tra i due file audio
30
  noise = ref_signal - deg_signal
31
  snr = 10 * np.log10(np.sum(ref_signal**2) / np.sum(noise**2))
32
-
33
  return snr
34
 
35
- def calculate_audio_difference(audio_ref, audio_deg):
36
- # Carica i file audio di riferimento e degradato
37
- ref_signal, ref_sample_rate = sf.read(audio_ref)
38
- deg_signal, deg_sample_rate = sf.read(audio_deg)
39
 
40
- # Verifica e correggi le differenze nella frequenza di campionamento
41
  if ref_sample_rate != deg_sample_rate:
42
- print("I due file audio hanno frequenze di campionamento diverse. Eseguo il resampling.")
43
  from scipy.signal import resample
44
  min_length = min(len(ref_signal), len(deg_signal))
45
  ref_signal = resample(ref_signal[:min_length], len(ref_signal))
46
  deg_signal = resample(deg_signal[:min_length], len(deg_signal))
47
 
48
- # Verifica e correggi le differenze nella lunghezza
49
- if len(ref_signal) != len(deg_signal):
50
- print("I due file audio hanno lunghezze diverse. Eseguo il padding.")
51
- max_length = max(len(ref_signal), len(deg_signal))
52
- ref_signal = np.pad(ref_signal, (0, max_length - len(ref_signal)))
53
- deg_signal = np.pad(deg_signal, (0, max_length - len(deg_signal)))
54
-
55
- # Calcola la differenza tra i segnali audio campione per campione
56
  diff_count = np.count_nonzero(ref_signal != deg_signal)
57
-
58
- # Calcola la percentuale di differenza tra i due segnali audio
59
  total_samples = len(ref_signal)
60
  difference_percentage = (diff_count / total_samples) * 100
61
 
62
  return difference_percentage
63
 
64
  def audio_quality_interface(reference_audio, degraded_audio):
65
- pesq_score = calculate_pesq(reference_audio.name, degraded_audio.name)
66
- snr = calculate_snr(reference_audio.name, degraded_audio.name)
67
- difference_percentage = calculate_audio_difference(reference_audio.name, degraded_audio.name)
68
 
69
- result = f"Risultati:\n\nPunteggio PESQ: {pesq_score}\nSNR: {snr}\nPercentuale di differenza: {difference_percentage:.2f}%"
70
  return result
71
 
72
  iface = gr.Interface(fn=audio_quality_interface,
 
3
  import soundfile as sf
4
  import gradio as gr
5
 
6
+ def calculate_pesq(reference_audio, degraded_audio):
7
+ # Directly use the audio data and sample rates passed from Gradio
8
+ ref_signal, ref_sample_rate = reference_audio
9
+ deg_signal, deg_sample_rate = degraded_audio
10
 
11
+ # Convert audio data to the same sample rate if needed
12
  if ref_sample_rate != deg_sample_rate:
 
13
  from scipy.signal import resample
14
  min_length = min(len(ref_signal), len(deg_signal))
15
  ref_signal = resample(ref_signal[:min_length], len(ref_signal))
16
  deg_signal = resample(deg_signal[:min_length], len(deg_signal))
17
 
 
18
  pesq_score = pesq.pesq(ref_signal, deg_signal, ref_sample_rate)
 
19
  return pesq_score
20
 
21
+ def calculate_snr(reference_audio, degraded_audio):
22
+ ref_signal, _ = reference_audio
23
+ deg_signal, _ = degraded_audio
 
24
 
 
25
  noise = ref_signal - deg_signal
26
  snr = 10 * np.log10(np.sum(ref_signal**2) / np.sum(noise**2))
 
27
  return snr
28
 
29
+ def calculate_audio_difference(reference_audio, degraded_audio):
30
+ ref_signal, ref_sample_rate = reference_audio
31
+ deg_signal, deg_sample_rate = degraded_audio
 
32
 
 
33
  if ref_sample_rate != deg_sample_rate:
 
34
  from scipy.signal import resample
35
  min_length = min(len(ref_signal), len(deg_signal))
36
  ref_signal = resample(ref_signal[:min_length], len(ref_signal))
37
  deg_signal = resample(deg_signal[:min_length], len(deg_signal))
38
 
 
 
 
 
 
 
 
 
39
  diff_count = np.count_nonzero(ref_signal != deg_signal)
 
 
40
  total_samples = len(ref_signal)
41
  difference_percentage = (diff_count / total_samples) * 100
42
 
43
  return difference_percentage
44
 
45
  def audio_quality_interface(reference_audio, degraded_audio):
46
+ pesq_score = calculate_pesq(reference_audio, degraded_audio)
47
+ snr = calculate_snr(reference_audio, degraded_audio)
48
+ difference_percentage = calculate_audio_difference(reference_audio, degraded_audio)
49
 
50
+ result = f"Risultati:\n\nPunteggio PESQ: {pesq_score:.2f}\nSNR: {snr:.2f}\nPercentuale di differenza: {difference_percentage:.2f}%"
51
  return result
52
 
53
  iface = gr.Interface(fn=audio_quality_interface,