gradio-app/fastrtc

★ 4,624⑂ 0

The python library for real-time communication

About gradio-app/fastrtc

gradio-app/fastrtc is an open-source project on GitHub, mainly written in JavaScript. The python library for real-time communication It currently holds 4,624 stars and 0 forks with 0 open issues, and was last pushed on an unknown date (repository created unknown).

Project Overview

AI Homed tracks it on the AI Audio Projects board and on the AI AI Audio Projects list.

GitHub Repository Details

Repository gradio-app/fastrtc · default branch - · size 0 KB · watchers 0 · source: GitHub REST API and repository README

README

FastRTC

https://github.com/gradio-app/fastrtc/blob/HEAD/FastRTC Logo
https://github.com/gradio-app/fastrtc/blob/HEAD/Static Badge https://github.com/gradio-app/fastrtc/blob/HEAD/Static Badge

The Real-Time Communication Library for Python.

Turn any python function into a real-time audio and video stream over WebRTC or WebSockets.

Installation

pip install fastrtc

to use built-in pause detection (see ReplyOnPause), and text to speech (see Text To Speech), install the vad and tts extras:

pip install "fastrtc[vad, tts]"

Key Features

Docs

https://fastrtc.org

Examples

See the Cookbook for examples of how to use the library.

🗣️👀 Gemini Audio Video Chat

Stream BOTH your webcam video and audio feeds to Google Gemini. You can also upload images to augment your conversation!

Demo | Code

🗣️ Google Gemini Real Time Voice API

Talk to Gemini in real time using Google's voice API.

Demo | Code

🗣️ OpenAI Real Time Voice API

Talk to ChatGPT in real time using OpenAI's voice API.

Demo | Code

🤖 Hello Computer

Say computer before asking your question!

Demo | Code

🤖 Llama Code Editor

Create and edit HTML pages with just your voice! Powered by SambaNova systems.

Demo | Code

🗣️ Talk to Claude

Use the Anthropic and Play.Ht APIs to have an audio conversation with Claude.

Demo | Code

🎵 Whisper Transcription

Have whisper transcribe your speech in real time!

Demo | Code

📷 Yolov10 Object Detection

Run the Yolov10 model on a user webcam stream in real time!

Demo | Code

🗣️ Kyutai Moshi

Kyutai's moshi is a novel speech-to-speech model for modeling human conversations.

Demo | Code

🗣️ Hello Llama: Stop Word Detection

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!

Demo | Code

Usage

This is a shortened version of the official usage guide.

Quickstart

Echo Audio

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

from fastrtc import (
    ReplyOnPause, AdditionalOutputs, Stream,
    audio_to_bytes, aggregate_bytes_to_16bit
)
import gradio as gr
from groq import Groq
import anthropic
from elevenlabs import ElevenLabs

groq_client = Groq() claude_client = anthropic.Anthropic() tts_client = ElevenLabs()

See "Talk to Claude" in Cookbook for an example of how to keep

track of the chat history.

def response( audio: tuple[int, np.ndarray], ): prompt = groq_client.audio.transcriptions.create( file=("audio-file.mp3", audio_to_bytes(audio)), model="whisper-large-v3-turbo", response_format="verbose_json", ).text response = claude_client.messages.create( model="claude-3-5-haiku-20241022", max_tokens=512, messages=[{"role": "user", "content": prompt}], ) response_text = " ".join( block.text for block in response.content if getattr(block, "type", None) == "text" ) iterator = tts_client.text_to_speech.convert_as_stream( text=response_text, voice_id="JBFqnCBsd6RMkjVDRZzb", model_id="eleven_multilingual_v2", output_format="pcm_24000" ) for chunk in aggregate_bytes_to_16bit(iterator): audio_array = np.frombuffer(chunk, dtype=np.int16).reshape(1, -1) yield (24000, audio_array)

stream = Stream( modality="audio", mode="send-receive", handler=ReplyOnPause(response), )

Webcam Stream

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

from fastrtc import Stream
import gradio as gr
import cv2
from huggingface_hub import hf_hub_download
from .inference import YOLOv10

model_file = hf_hub_download( repo_id="onnx-community/yolov10n", filename="onnx/model.onnx" )

git clone https://huggingface.co/spaces/fastrtc/object-detection

for YOLOv10 implementation

model = YOLOv10(model_file)

def detection(image, conf_threshold=0.3): image = cv2.resize(image, (model.input_width, model.input_height)) new_image = model.detect_objects(image, conf_threshold) return cv2.resize(new_image, (500, 500))

stream = Stream( handler=detection, modality="video", mode="send-receive", additional_inputs=[ gr.Slider(minimum=0, maximum=1, step=0.01, value=0.3) ] )

Running the Stream

Run:

Gradio

stream.ui.launch()

Telephone (Audio Only)

    stream.fastphone()
    

FastAPI

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

GitHub Stars & Activity

4,624Stars
0Forks
0Open issues
JavaScriptLanguage

GitHub Popularity

GitHub stars4,624
Forks0
Open issues0
Primary languageJavaScript
License-
Stars gained today0
Created-
Last pushed-

Trending History

Trending statusnot on today's boards

Related AI Projects

1

fspecii / ace-step-ui

JavaScript★ 4,889⑂ 0
2

QwenAudio / qwen-audio-agent

JavaScript★ 2,651⑂ 0
3

huggingface / transformers

Python★ 166,221⑂ 0
4

harry0703 / MoneyPrinterTurbo

Python★ 124,071⑂ 0
5

unslothai / unsloth

Python★ 76,216⑂ 0
6

RVC-Boss / GPT-SoVITS

Python★ 61,795⑂ 0
7

calesthio / OpenMontage

Python★ 59,377⑂ 0
8

ggml-org / whisper.cpp

C++★ 53,692⑂ 0

More AI Rankings