The python library for real-time communication
Stream BOTH your webcam video and audio feeds to Google Gemini. You can also upload images to augment your conversation!
Talk to Gemini in real time using Google's voice API.
Talk to ChatGPT in real time using OpenAI's voice API.
Say computer before asking your question!
Create and edit HTML pages with just your voice! Powered by SambaNova systems.
Use the Anthropic and Play.Ht APIs to have an audio conversation with Claude.
Have whisper transcribe your speech in real time!
Run the Yolov10 model on a user webcam stream in real time!
Kyutai's moshi is a novel speech-to-speech model for modeling human conversations.
A code editor built with Llama 3.3 70b that is triggered by the phrase "Hello Llama". Build a Siri-like coding assistant in 100 lines of code!
## Usage This is a shortened version of the official [usage guide](https://freddyaboulton.github.io/gradio-webrtc/user-guide/). - `.ui.launch()`: Launch a built-in UI for easily testing and sharing your stream. Built with [Gradio](https://www.gradio.app/). - `.fastphone()`: Get a free temporary phone number to call into your stream. Hugging Face token required. - `.mount(app)`: Mount the stream on a [FastAPI](https://fastapi.tiangolo.com/) app. Perfect for integrating with your already existing production system. ## Quickstart ### Echo Audio ```python from fastrtc import Stream, ReplyOnPause import numpy as np def echo(audio: tuple[int, np.ndarray]): # The function will be passed the audio until the user pauses # Implement any iterator that yields audio # See "LLM Voice Chat" for a more complete example yield audio stream = Stream( handler=ReplyOnPause(echo), modality="audio", mode="send-receive", ) ``` ### LLM Voice Chat ``` … ``` ### Webcam Stream ```python from fastrtc import Stream import numpy as np def flip_vertically(image): return np.flip(image, axis=0) stream = Stream( handler=flip_vertically, modality="video", mode="send-receive", ) ``` ### Object Detection ``` … ``` ## Running the Stream Run: ### Gradio ```py stream.ui.launch() ``` ### Telephone (Audio Only) ```py stream.fastphone() ``` ### FastAPI ```py app = FastAPI() stream.mount(app) # Optional: Add routes @app.get("/") async def _(): return HTMLResponse(content=open("index.html").read()) # uvicorn app:app --host 0.0.0.0 --port 8000 ```No open issues yet, or sync has not completed.