Ivan000 commited on
Commit
4654b73
·
verified ·
1 Parent(s): 9f20009

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +49 -0
app.py ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import librosa
3
+ import librosa.display
4
+ import numpy as np
5
+ import matplotlib.pyplot as plt
6
+ from moviepy.editor import VideoClip, AudioFileClip, CompositeVideoClip
7
+
8
+ def generate_frequency_visualization(audio_file):
9
+ # Load the audio file
10
+ y, sr = librosa.load(audio_file, sr=None)
11
+
12
+ # Compute the Short-Time Fourier Transform (STFT)
13
+ D = librosa.amplitude_to_db(np.abs(librosa.stft(y)), ref=np.max)
14
+
15
+ # Create a figure for the visualization
16
+ fig, ax = plt.subplots()
17
+ img = librosa.display.specshow(D, sr=sr, ax=ax, y_axis='linear', fmax=8000)
18
+ fig.colorbar(img, ax=ax, format="%+2.0f dB")
19
+ ax.set(title='Frequency Visualization')
20
+ plt.axis('off')
21
+ plt.savefig('frequency_visualization.png', bbox_inches='tight', pad_inches=0, dpi=100)
22
+ plt.close(fig)
23
+
24
+ # Load the audio file
25
+ audio_clip = AudioFileClip(audio_file)
26
+
27
+ # Create a video clip from the frequency visualization image
28
+ video_clip = VideoClip(lambda t: plt.imread('frequency_visualization.png'), duration=audio_clip.duration)
29
+
30
+ # Combine the audio and video clips
31
+ final_clip = video_clip.set_audio(audio_clip)
32
+
33
+ # Write the final video to a file
34
+ output_file = 'frequency_visualization.mp4'
35
+ final_clip.write_videofile(output_file, codec='libx264', audio_codec='aac')
36
+
37
+ return output_file
38
+
39
+ # Create the Gradio interface
40
+ iface = gr.Interface(
41
+ fn=generate_frequency_visualization,
42
+ inputs=gr.Audio(source="upload", type="file"),
43
+ outputs=gr.Video(label="Frequency Visualization Video"),
44
+ title="Audio Frequency Visualization",
45
+ description="Upload an audio file to generate a video with frequency visualization."
46
+ )
47
+
48
+ # Launch the Gradio interface
49
+ iface.launch()