suno / app.py
arjunbahuguna's picture
Update app.py
deead27 verified
import streamlit as st
from transformers import pipeline
import numpy as np
from scipy.io.wavfile import write
# Title of the Streamlit app
st.title("Text-to-Speech+ Generation App")
# Text area for user input
text_input = st.text_area('Enter text prompt')
# Create the audio generation pipeline
try:
pipe = pipeline(model="suno/bark-small")
except ImportError as e:
st.error(f"Error importing pipeline from transformers: {e}")
st.stop()
# Generate audio based on user input
if text_input:
with st.spinner('Generating audio...'):
output = pipe(text_input)
# Extract audio array and sampling rate from the output
audio_array = output["audio"]
sampling_rate = output["sampling_rate"]
# Ensure the audio array is a numpy array
audio_array = np.array(audio_array, dtype=np.float32)
# Squeeze to remove single-dimensional entries from the shape of the array
audio_array = np.squeeze(audio_array)
# Save the audio array as a WAV file
write("output.wav", sampling_rate, audio_array)
# Read the saved WAV file
audio_file = open("output.wav", "rb")
audio_bytes = audio_file.read()
# Display the output audio
st.audio(audio_bytes, format="audio/wav")
# Optional: Display JSON output for debugging
if st.checkbox('Show raw output'):
st.json(output)