[PR #18744] [CLOSED] Fix: prevent TTS audio overlap on new playback #63756

Closed
opened 2026-05-06 08:46:31 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/open-webui/open-webui/pull/18744
Author: @ZedUnknown
Created: 10/30/2025
Status: Closed

Base: devHead: fix/tts-overlap


📝 Commits (3)

  • f60fe4b Fix: prevent TTS audio overlap on new playback
  • 061acad merged the redundant logic from L199-L205 as suggested by @rgaricano.
  • b3c6511 Fix issue where navigating to an edited user message interrupts active TTS playback

📊 Changes

3 files changed (+191 additions, -155 deletions)

View changed files

📝 src/lib/components/chat/Chat.svelte (+6 -0)
📝 src/lib/components/chat/Messages/ResponseMessage.svelte (+124 -155)
src/lib/utils/tts.ts (+61 -0)

📄 Description

Pull Request Checklist

Note to first-time contributors: Please open a discussion post in Discussions and describe your changes before submitting a pull request.

Before submitting, make sure you've checked the following:

  • Target branch: Verify that the pull request targets the dev branch. Not targeting the dev branch may lead to immediate closure of the PR.
  • Description: Provide a concise description of the changes made in this pull request.
  • Changelog: Ensure a changelog entry following the format of Keep a Changelog is added at the bottom of the PR description.
  • Documentation: If necessary, update relevant documentation Open WebUI Docs like environment variables, the tutorials, or other documentation sources.
  • Dependencies: Are there any new dependencies? Have you updated the dependency versions in the documentation?
  • Testing: Perform manual tests to verify the implemented fix/feature works as intended AND does not break any other functionality. Take this as an opportunity to make screenshots of the feature/fix and include it in the PR description.
  • Agentic AI Code:: Confirm this Pull Request is not written by any AI Agent or has at least gone through additional human review and manual testing. If any AI Agent is the co-author of this PR, it may lead to immediate closure of the PR.
  • Code review: Have you performed a self-review of your code, addressing any coding standard issues and ensuring adherence to the project's coding standards?
  • Title Prefix: To clearly categorize this pull request, prefix the pull request title using one of the following:
    • BREAKING CHANGE: Significant changes that may affect compatibility
    • build: Changes that affect the build system or external dependencies
    • ci: Changes to our continuous integration processes or workflows
    • chore: Refactor, cleanup, or other non-functional code changes
    • docs: Documentation update or addition
    • feat: Introduces a new feature or enhancement to the codebase
    • fix: Bug fix or error correction
    • i18n: Internationalization or localization changes
    • perf: Performance improvement
    • refactor: Code restructuring for better maintainability, readability, or scalability
    • style: Changes that do not affect the meaning of the code (white space, formatting, missing semi-colons, etc.)
    • test: Adding missing tests or correcting existing tests
    • WIP: Work in progress, a temporary label for incomplete or ongoing work

Changelog Entry

Description

  • Fixed overlapping TTS (Read Aloud) playback when switching between messages.
  • The previous behavior caused multiple TTS instances to play simultaneously, resulting in confusing and unintuitive audio output.
  • The update ensures that only one TTS instance plays at a time, automatically stopping any currently playing audio when a new one starts.

Added

  • Logic to automatically stop ongoing TTS playback before starting a new one.
  • Event listener cleanup to ensure audio stops on page unload or message switch.

Changed

  • Improved user experience for Read Aloud by ensuring seamless transitions between messages.
  • Updated playback control flow for clearer TTS state management.

Deprecated

  • N/A

Removed

  • Removed redundant or conflicting TTS control instances that caused parallel playback.

Fixed


Security

  • N/A

Breaking Changes

  • BREAKING CHANGE: None

Additional Information

  • Although a queue-based approach was proposed earlier, this implementation prioritizes real-time responsiveness and user control, ensuring immediate stop/start feedback instead of queued playback.
  • Tested across multiple message interactions - no overlapping playback occurs, and user experience remains consistent.

Screenshots or Videos

Verified by playing multiple messages sequentially and switching rapidly: only one audio plays at a time.

Contributor License Agreement

By submitting this pull request, I confirm that I have read and fully agree to the Contributor License Agreement (CLA), and I am providing my contributions under its terms.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/open-webui/open-webui/pull/18744 **Author:** [@ZedUnknown](https://github.com/ZedUnknown) **Created:** 10/30/2025 **Status:** ❌ Closed **Base:** `dev` ← **Head:** `fix/tts-overlap` --- ### 📝 Commits (3) - [`f60fe4b`](https://github.com/open-webui/open-webui/commit/f60fe4b2207f84018ba432bf7ade62fcd4236c06) Fix: prevent TTS audio overlap on new playback - [`061acad`](https://github.com/open-webui/open-webui/commit/061acad1a7df3a7b4063993ad85d4571e1988d0b) merged the redundant logic from L199-L205 as suggested by @rgaricano. - [`b3c6511`](https://github.com/open-webui/open-webui/commit/b3c65114aa1c0da8a297af0ba0d0cf0fc61b73ed) Fix issue where navigating to an edited user message interrupts active TTS playback ### 📊 Changes **3 files changed** (+191 additions, -155 deletions) <details> <summary>View changed files</summary> 📝 `src/lib/components/chat/Chat.svelte` (+6 -0) 📝 `src/lib/components/chat/Messages/ResponseMessage.svelte` (+124 -155) ➕ `src/lib/utils/tts.ts` (+61 -0) </details> ### 📄 Description # Pull Request Checklist ### Note to first-time contributors: Please open a discussion post in [Discussions](https://github.com/open-webui/open-webui/discussions) and describe your changes before submitting a pull request. **Before submitting, make sure you've checked the following:** - [x] **Target branch:** Verify that the pull request targets the `dev` branch. Not targeting the `dev` branch may lead to immediate closure of the PR. - [x] **Description:** Provide a concise description of the changes made in this pull request. - [x] **Changelog:** Ensure a changelog entry following the format of [Keep a Changelog](https://keepachangelog.com/) is added at the bottom of the PR description. - [x] **Documentation:** If necessary, update relevant documentation [Open WebUI Docs](https://github.com/open-webui/docs) like environment variables, the tutorials, or other documentation sources. - [x] **Dependencies:** Are there any new dependencies? Have you updated the dependency versions in the documentation? - [x] **Testing:** Perform manual tests to verify the implemented fix/feature works as intended AND does not break any other functionality. Take this as an opportunity to make screenshots of the feature/fix and include it in the PR description. - [x] **Agentic AI Code:**: Confirm this Pull Request is **not written by any AI Agent** or has at least gone through additional human review **and** manual testing. If any AI Agent is the co-author of this PR, it may lead to immediate closure of the PR. - [x] **Code review:** Have you performed a self-review of your code, addressing any coding standard issues and ensuring adherence to the project's coding standards? - [x] **Title Prefix:** To clearly categorize this pull request, prefix the pull request title using one of the following: - **BREAKING CHANGE**: Significant changes that may affect compatibility - **build**: Changes that affect the build system or external dependencies - **ci**: Changes to our continuous integration processes or workflows - **chore**: Refactor, cleanup, or other non-functional code changes - **docs**: Documentation update or addition - **feat**: Introduces a new feature or enhancement to the codebase - **fix**: Bug fix or error correction - **i18n**: Internationalization or localization changes - **perf**: Performance improvement - **refactor**: Code restructuring for better maintainability, readability, or scalability - **style**: Changes that do not affect the meaning of the code (white space, formatting, missing semi-colons, etc.) - **test**: Adding missing tests or correcting existing tests - **WIP**: Work in progress, a temporary label for incomplete or ongoing work # **Changelog Entry** ### **Description** * Fixed overlapping TTS (Read Aloud) playback when switching between messages. * The previous behavior caused multiple TTS instances to play simultaneously, resulting in confusing and unintuitive audio output. * The update ensures that only one TTS instance plays at a time, automatically stopping any currently playing audio when a new one starts. --- ### **Added** * Logic to automatically stop ongoing TTS playback before starting a new one. * Event listener cleanup to ensure audio stops on page unload or message switch. --- ### **Changed** * Improved user experience for Read Aloud by ensuring seamless transitions between messages. * Updated playback control flow for clearer TTS state management. --- ### **Deprecated** * N/A --- ### **Removed** * Removed redundant or conflicting TTS control instances that caused parallel playback. --- ### **Fixed** * Fixed issue where multiple TTS audios overlapped when quickly switching between messages. * Related issue: #16150 --- ### **Security** * N/A --- ### **Breaking Changes** * **BREAKING CHANGE**: None --- ### **Additional Information** * Although a queue-based approach was proposed earlier, this implementation prioritizes **real-time responsiveness** and **user control**, ensuring immediate stop/start feedback instead of queued playback. * Tested across multiple message interactions - no overlapping playback occurs, and user experience remains consistent. --- ### **Screenshots or Videos** > Verified by playing multiple messages sequentially and switching rapidly: only one audio plays at a time. ### Contributor License Agreement By submitting this pull request, I confirm that I have read and fully agree to the [Contributor License Agreement (CLA)](https://github.com/open-webui/open-webui/blob/main/CONTRIBUTOR_LICENSE_AGREEMENT), and I am providing my contributions under its terms. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-05-06 08:46:32 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/open-webui#63756