owiedotch commited on
Commit
44bab11
1 Parent(s): 2a03d5f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +55 -42
app.py CHANGED
@@ -18,46 +18,59 @@ class DACApi:
18
 
19
  @spaces.GPU
20
  def encode_audio(self, audio):
21
- # Convert audio to WAV
22
- audio = AudioSegment.from_file(audio.name)
23
- wav_io = io.BytesIO()
24
- audio.export(wav_io, format="wav")
25
- wav_io.seek(0)
26
-
27
- # Load audio signal
28
- signal = AudioSignal(wav_io)
29
- signal = signal.to(self.device)
30
-
31
- # Compress audio
32
- print("Compressing audio...")
33
- compressed = self.model.compress(signal)
34
-
35
- # Detach the compressed tensor before serialization
36
- compressed_detached = compressed.detach()
37
-
38
- # Save compressed audio to BytesIO
39
- output = io.BytesIO()
40
- compressed_detached.save(output)
41
- output.seek(0)
42
-
43
- return output
 
 
 
 
 
 
 
44
 
45
  @spaces.GPU
46
  def decode_audio(self, compressed_file):
47
- # Load compressed audio
48
- compressed = dac.DACFile.load(compressed_file)
49
- compressed = compressed.to(self.device)
50
-
51
- # Decompress audio
52
- print("Decompressing audio...")
53
- decompressed = self.model.decompress(compressed)
54
-
55
- # Save decompressed audio to BytesIO
56
- output = io.BytesIO()
57
- decompressed.write(output, format='wav')
58
- output.seek(0)
59
-
60
- return output
 
 
 
 
 
 
61
 
62
  dac_api = DACApi()
63
 
@@ -72,19 +85,19 @@ def decode(compressed_file):
72
  # Gradio interface
73
  with gr.Blocks() as demo:
74
  gr.Markdown("# Audio Compression with DAC")
75
-
76
  with gr.Tab("Encode"):
77
  audio_input = gr.Audio(type="filepath", label="Input Audio")
78
  encode_button = gr.Button("Encode")
79
  encoded_output = gr.File(label="Compressed Audio")
80
-
81
  encode_button.click(encode, inputs=audio_input, outputs=encoded_output)
82
-
83
  with gr.Tab("Decode"):
84
  compressed_input = gr.File(label="Compressed Audio")
85
  decode_button = gr.Button("Decode")
86
  decoded_output = gr.Audio(label="Decompressed Audio")
87
-
88
  decode_button.click(decode, inputs=compressed_input, outputs=decoded_output)
89
 
90
- demo.launch()
 
18
 
19
  @spaces.GPU
20
  def encode_audio(self, audio):
21
+ try:
22
+ # Convert audio to WAV
23
+ audio = AudioSegment.from_file(audio.name)
24
+ wav_io = io.BytesIO()
25
+ audio.export(wav_io, format="wav")
26
+ wav_io.seek(0)
27
+
28
+ # Load audio signal
29
+ signal = AudioSignal(wav_io)
30
+ signal = signal.to(self.device)
31
+
32
+ # Compress audio within a no_grad context
33
+ with torch.no_grad():
34
+ print("Compressing audio...") # You can keep this for console logging
35
+ compressed = self.model.compress(signal)
36
+
37
+ # Detach the compressed tensor (additional safety measure)
38
+ compressed_detached = compressed.detach()
39
+
40
+ # Save compressed audio to BytesIO
41
+ output = io.BytesIO()
42
+ compressed_detached.save(output)
43
+ output.seek(0)
44
+
45
+ return output
46
+
47
+ except Exception as e:
48
+ # Display error message in a popup
49
+ gr.Warning(f"An error occurred during encoding: {e}")
50
+ return None # Return None to indicate failure
51
 
52
  @spaces.GPU
53
  def decode_audio(self, compressed_file):
54
+ try:
55
+ # Load compressed audio
56
+ compressed = dac.DACFile.load(compressed_file)
57
+ compressed = compressed.to(self.device)
58
+
59
+ # Decompress audio
60
+ print("Decompressing audio...") # You can keep this for console logging
61
+ decompressed = self.model.decompress(compressed)
62
+
63
+ # Save decompressed audio to BytesIO
64
+ output = io.BytesIO()
65
+ decompressed.write(output, format='wav')
66
+ output.seek(0)
67
+
68
+ return output
69
+
70
+ except Exception as e:
71
+ # Display error message in a popup
72
+ gr.Warning(f"An error occurred during decoding: {e}")
73
+ return None # Return None to indicate failure
74
 
75
  dac_api = DACApi()
76
 
 
85
  # Gradio interface
86
  with gr.Blocks() as demo:
87
  gr.Markdown("# Audio Compression with DAC")
88
+
89
  with gr.Tab("Encode"):
90
  audio_input = gr.Audio(type="filepath", label="Input Audio")
91
  encode_button = gr.Button("Encode")
92
  encoded_output = gr.File(label="Compressed Audio")
93
+
94
  encode_button.click(encode, inputs=audio_input, outputs=encoded_output)
95
+
96
  with gr.Tab("Decode"):
97
  compressed_input = gr.File(label="Compressed Audio")
98
  decode_button = gr.Button("Decode")
99
  decoded_output = gr.Audio(label="Decompressed Audio")
100
+
101
  decode_button.click(decode, inputs=compressed_input, outputs=decoded_output)
102
 
103
+ demo.queue().launch()