Spaces:
Sleeping
Sleeping
from transformers import AutoProcessor, MusicgenForConditionalGeneration | |
import scipy | |
import streamlit as st | |
BASE_MODEL = "facebook/musicgen-small" | |
processor = AutoProcessor.from_pretrained(BASE_MODEL) | |
model = MusicgenForConditionalGeneration.from_pretrained(BASE_MODEL) | |
def generate_audio(text): | |
inputs = processor( | |
text=[text], | |
padding=True, | |
return_tensors="pt", | |
) | |
audio_values = model.generate(**inputs, do_sample=True, guidance_scale=3, max_new_tokens=256) | |
cleaned_text = text.replace(" ", "_") | |
sampling_rate = model.config.audio_encoder.sampling_rate | |
scipy.io.wavfile.write(f'${cleaned_text}.wav', rate=sampling_rate, data=audio_values[0, 0].numpy()) | |
return f'${cleaned_text}.wav' | |
# Streamlit app title and description | |
st.title("Text-to-Audio Generation") | |
# User input for text prompt | |
text = st.text_area("Enter Text Prompt:") | |
# Generate audio when the user clicks the button | |
if st.button("Generate Audio"): | |
if text: | |
# Generate audio using the ModelManager | |
audio_file_path = generate_audio(text) | |
# Display the audio player | |
audio_data = open(audio_file_path, "rb").read() | |
st.audio(audio_data, format="audio/wav") | |
# Provide a download link for the audio file | |
st.write("Audio Generated Successfully!") | |
st.success(f"Download the audio file [here](/{audio_file_path}).") | |
else: | |
st.warning("Please enter a text prompt.") | |