mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-01-10 12:38:52 +01:00
🎧 fix(TTS): Improve State of audio playback, hook patterns, and fix undefined MediaSource (#3632)
This commit is contained in:
parent
e3ebcfd2b1
commit
dc8d30ad90
6 changed files with 108 additions and 72 deletions
|
|
@ -5,9 +5,9 @@ import { useQueryClient } from '@tanstack/react-query';
|
|||
import { useRecoilState, useRecoilValue, useSetRecoilState } from 'recoil';
|
||||
import type { TMessage } from 'librechat-data-provider';
|
||||
import { useCustomAudioRef, MediaSourceAppender, usePauseGlobalAudio } from '~/hooks/Audio';
|
||||
import { getLatestText, logger } from '~/utils';
|
||||
import { useAuthContext } from '~/hooks';
|
||||
import { globalAudioId } from '~/common';
|
||||
import { getLatestText } from '~/utils';
|
||||
import store from '~/store';
|
||||
|
||||
function timeoutPromise(ms: number, message?: string) {
|
||||
|
|
@ -51,7 +51,7 @@ export default function StreamAudio({ index = 0 }) {
|
|||
const latestText = getLatestText(latestMessage);
|
||||
|
||||
const shouldFetch = !!(
|
||||
token &&
|
||||
token != null &&
|
||||
automaticPlayback &&
|
||||
isSubmitting &&
|
||||
latestMessage &&
|
||||
|
|
@ -60,7 +60,7 @@ export default function StreamAudio({ index = 0 }) {
|
|||
latestMessage.messageId &&
|
||||
!latestMessage.messageId.includes('_') &&
|
||||
!isFetching &&
|
||||
activeRunId &&
|
||||
activeRunId != null &&
|
||||
activeRunId !== audioRunId
|
||||
);
|
||||
|
||||
|
|
@ -109,7 +109,8 @@ export default function StreamAudio({ index = 0 }) {
|
|||
const reader = response.body.getReader();
|
||||
|
||||
const type = 'audio/mpeg';
|
||||
const browserSupportsType = MediaSource.isTypeSupported(type);
|
||||
const browserSupportsType =
|
||||
typeof MediaSource !== 'undefined' && MediaSource.isTypeSupported(type);
|
||||
let mediaSource: MediaSourceAppender | undefined;
|
||||
if (browserSupportsType) {
|
||||
mediaSource = new MediaSourceAppender(type);
|
||||
|
|
@ -210,6 +211,7 @@ export default function StreamAudio({ index = 0 }) {
|
|||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [paramId]);
|
||||
|
||||
logger.log('StreamAudio.tsx - globalAudioURL:', globalAudioURL);
|
||||
return (
|
||||
<audio
|
||||
ref={audioRef}
|
||||
|
|
@ -222,7 +224,7 @@ export default function StreamAudio({ index = 0 }) {
|
|||
height: '0px',
|
||||
width: '0px',
|
||||
}}
|
||||
src={globalAudioURL || undefined}
|
||||
src={globalAudioURL ?? undefined}
|
||||
id={globalAudioId}
|
||||
muted
|
||||
autoPlay
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue