mirror of
https://github.com/HumanAIGC-Engineering/gradio-webrtc.git
synced 2026-02-05 01:49:23 +08:00
* Add code * add code * add code * Rename messages * rename * add code * Add demo * docs + demos + bug fixes * add code * styles * user guide * Styles * Add code * misc docs updates * print nit * whisper + pr * url for images * whsiper update * Fix bugs * remove demo files * version number * Fix pypi readme * Fix * demos * Add llama code editor * Update llama code editor and object detection cookbook * Add more cookbook demos * add code * Fix links for PR deploys * add code * Fix the install * add tts * TTS docs * Typo * Pending bubbles for reply on pause * Stream redesign (#63) * better error handling * Websocket error handling * add code --------- Co-authored-by: Freddy Boulton <freddyboulton@hf-freddy.local> * remove docs from dist * Some docs typos * more typos * upload changes + docs * docs * better phone * update docs * add code * Make demos better * fix docs + websocket start_up * remove mention of FastAPI app * fastphone tweaks * add code * ReplyOnStopWord fixes * Fix cookbook * Fix pypi readme * add code * bump versions * sambanova cookbook * Fix tags * Llm voice chat * kyutai tag * Add error message to all index.html * STT module uses Moonshine * Not required from typing extensions * fix llm voice chat * Add vpn warning * demo fixes * demos * Add more ui args and gemini audio-video * update cookbook * version 9 --------- Co-authored-by: Freddy Boulton <freddyboulton@hf-freddy.local>
70 lines
2.1 KiB
Markdown
70 lines
2.1 KiB
Markdown
## Demo does not work when deploying to the cloud
|
|
|
|
Make sure you are using a TURN server. See [deployment](../deployment).
|
|
|
|
## Recorded input audio sounds muffled during output audio playback
|
|
|
|
By default, the microphone is [configured](https://github.com/freddyaboulton/gradio-webrtc/blob/903f1f70bd586f638ad3b5a3940c7a8ec70ad1f5/backend/gradio_webrtc/webrtc.py#L575) to do echo cancellation.
|
|
This is what's causing the recorded audio to sound muffled when the streamed audio starts playing.
|
|
You can disable this via the `track_constraints` (see [Advanced Configuration](../advanced-configuration)) with the following code:
|
|
|
|
```python
|
|
stream = Stream(
|
|
track_constraints={
|
|
"echoCancellation": False,
|
|
"noiseSuppression": {"exact": True},
|
|
"autoGainControl": {"exact": True},
|
|
"sampleRate": {"ideal": 24000},
|
|
"sampleSize": {"ideal": 16},
|
|
"channelCount": {"exact": 1},
|
|
},
|
|
rtc_configuration=None,
|
|
mode="send-receive",
|
|
modality="audio",
|
|
)
|
|
```
|
|
|
|
## How to raise errors in the UI
|
|
|
|
You can raise `WebRTCError` in order for an error message to show up in the user's screen. This is similar to how `gr.Error` works.
|
|
|
|
!!! warning
|
|
|
|
The `WebRTCError` class is only supported in the `WebRTC` component.
|
|
|
|
Here is a simple example:
|
|
|
|
```python
|
|
def generation(num_steps):
|
|
for _ in range(num_steps):
|
|
segment = AudioSegment.from_file(
|
|
"/Users/freddy/sources/gradio/demo/audio_debugger/cantina.wav"
|
|
)
|
|
yield (
|
|
segment.frame_rate,
|
|
np.array(segment.get_array_of_samples()).reshape(1, -1),
|
|
)
|
|
time.sleep(3.5)
|
|
raise WebRTCError("This is a test error")
|
|
|
|
with gr.Blocks() as demo:
|
|
audio = WebRTC(
|
|
label="Stream",
|
|
mode="receive",
|
|
modality="audio",
|
|
)
|
|
num_steps = gr.Slider(
|
|
label="Number of Steps",
|
|
minimum=1,
|
|
maximum=10,
|
|
step=1,
|
|
value=5,
|
|
)
|
|
button = gr.Button("Generate")
|
|
|
|
audio.stream(
|
|
fn=generation, inputs=[num_steps], outputs=[audio], trigger=button.click
|
|
)
|
|
|
|
demo.launch()
|
|
``` |