|
from fastrtc import Stream, ReplyOnPause |
|
import numpy as np |
|
from pydub import AudioSegment |
|
from pydub.utils import which |
|
import gradio as gr |
|
|
|
AudioSegment.ffmpeg = which("ffmpeg") |
|
|
|
|
|
|
|
def echo(audio: tuple[int, np.ndarray]) -> tuple[int, np.ndarray]: |
|
yield audio |
|
|
|
stream = Stream(ReplyOnPause(echo), modality="audio", mode="send-receive") |
|
|
|
def process_audio(audio_input): |
|
|
|
sample_rate, audio_data = audio_input |
|
|
|
|
|
processed_sample_rate, processed_audio = echo((sample_rate, audio_data)) |
|
|
|
|
|
return processed_sample_rate, processed_audio |
|
|
|
interface = gr.Interface( |
|
fn=process_audio, |
|
inputs=gr.Audio(type="numpy"), |
|
outputs=gr.Audio(type="numpy"), |
|
live=True |
|
) |
|
interface.launch() |
|
|