speech_to_voice / app.py
hiba9's picture
Update app.py
56c748c verified
raw
history blame
No virus
1.53 kB
import streamlit as st
import os
os.system('pip install transformers')
import transformers
from transformers import VitsModel, AutoTokenizer
import os
os.system('pip install torch')
import torch
import os
os.system('pip install tensorflow')
import os
os.system('pip install soundfile')
import numpy as np
import io
import soundfile as sf
import torch
print(torch.__version__)
# Load model and tokenizer
model = VitsModel.from_pretrained("facebook/mms-tts-eng")
tokenizer = AutoTokenizer.from_pretrained("facebook/mms-tts-eng")
def generate_speech(text):
inputs = tokenizer(text, return_tensors="pt")
with torch.no_grad():
output = model(**inputs).waveform # Corrected typo: waveform (not waveformform)
# Convert the waveform tensor to a NumPy array
waveform = output.squeeze().cpu().numpy()
# Convert the waveform to bytes
audio_bytes_io = io.BytesIO()
sf.write(audio_bytes_io, waveform, samplerate=22050, format='WAV')
audio_bytes_io.seek(0)
return audio_bytes_io
st.title("Text-to-Speech Converter")
st.write("Developed by Safwan Ahmad Saffi")
st.write("Enter text below and click 'Generate Speech' to convert it to audio.")
# Text input
text_input = st.text_area("Text to convert:", "Some example text in the English language")
if st.button("Generate Speech"):
if text_input:
st.write("Generating speech...")
audio_bytes_io = generate_speech(text_input)
# Display audio in Streamlit
st.audio(audio_bytes_io, format="audio/wav")
else:
st.write("Please enter some text.")