""" pip install -r requirements.txt wget https://github.com/thewh1teagle/israwave/releases/download/v0.1.0/israwave.onnx wget https://github.com/thewh1teagle/israwave/releases/download/v0.1.0/nakdimon.onnx wget https://github.com/thewh1teagle/israwave/releases/download/v0.1.0/espeak-ng-data.tar.gz tar xf espeak-ng-data.tar.gz python3 app.py """ import gradio as gr from israwave import IsraWave from nakdimon_ort import Nakdimon from israwave.segment import SegmentExtractor import numpy as np import soundfile as sf import io segment_extractor = SegmentExtractor() speech_model = IsraWave('israwave.onnx', 'espeak-ng-data') niqqud_model = Nakdimon('nakdimon.onnx') def create_audio(text: str, rate, pitch, energy): text = niqqud_model.compute(text) waveforms = [] for segment in segment_extractor.extract_segments(text): waveform = speech_model.create(segment.text, rate=rate, pitch=pitch, energy=energy) waveforms.append(waveform.samples) silence = segment.create_pause(waveform.sample_rate) waveforms.append(silence) return np.concatenate(waveforms), speech_model.sample_rate def create(text, rate, pitch, energy): audio, sample_rate = create_audio(text, rate, pitch, energy) # Convert numpy array to WAV format in memory using soundfile with io.BytesIO() as buf: sf.write(buf, audio, sample_rate, format='WAV') buf.seek(0) return buf.read() with gr.Blocks(theme=gr.themes.Soft()) as demo: # Centered title gr.Markdown("