From 9b78a7c887a8b987af964a1689ee261c01af0877 Mon Sep 17 00:00:00 2001 From: 1600822305 <161661698+1600822305@users.noreply.github.com> Date: Wed, 9 Apr 2025 17:41:36 +0800 Subject: [PATCH] Update MessageMenubar.tsx --- .../pages/home/Messages/MessageMenubar.tsx | 68 +------------------ 1 file changed, 2 insertions(+), 66 deletions(-) diff --git a/src/renderer/src/pages/home/Messages/MessageMenubar.tsx b/src/renderer/src/pages/home/Messages/MessageMenubar.tsx index a566da7750..c876311819 100644 --- a/src/renderer/src/pages/home/Messages/MessageMenubar.tsx +++ b/src/renderer/src/pages/home/Messages/MessageMenubar.tsx @@ -64,7 +64,6 @@ const MessageMenubar: FC = (props) => { const { t } = useTranslation() const [copied, setCopied] = useState(false) const [isTranslating, setIsTranslating] = useState(false) - const [isSpeaking, setIsSpeaking] = useState(false) const [showRegenerateTooltip, setShowRegenerateTooltip] = useState(false) const [showDeleteTooltip, setShowDeleteTooltip] = useState(false) const assistantModel = assistant?.model @@ -188,63 +187,7 @@ const MessageMenubar: FC = (props) => { [isTranslating, message, editMessage, setStreamMessage, commitStreamMessage, clearStreamMessage, t] ) - // 处理TTS功能 - const handleTTS = useCallback(async () => { - console.log('点击TTS按钮,当前状态:', isSpeaking ? '正在播放' : '未播放') - - if (isSpeaking) { - // 如果正在播放,则停止 - console.log('正在播放,执行停止操作') - TTSService.stop() - setIsSpeaking(false) - return - } - - // 先停止所有正在进行的TTS播放 - console.log('开始新的播放,先停止现有播放') - TTSService.stop() - - // 等待一下,确保之前的播放已经完全停止 - await new Promise(resolve => setTimeout(resolve, 100)) - - setIsSpeaking(true) - try { - console.log('开始播放消息:', message.id) - await TTSService.speakFromMessage(message) - - // 监听播放结束 - let checkPlayingStatusInterval: number | null = null - - const checkPlayingStatus = () => { - if (!TTSService.isCurrentlyPlaying()) { - console.log('TTS播放已结束,重置状态') - setIsSpeaking(false) - if (checkPlayingStatusInterval !== null) { - clearInterval(checkPlayingStatusInterval) - checkPlayingStatusInterval = null - } - } - } - - checkPlayingStatusInterval = window.setInterval(checkPlayingStatus, 500) as unknown as number - - // 添加一个安全机制,确保即使出错也会重置状态 - setTimeout(() => { - if (isSpeaking) { - console.log('TTS播放超时,强制重置状态') - TTSService.stop() - setIsSpeaking(false) - if (checkPlayingStatusInterval !== null) { - clearInterval(checkPlayingStatusInterval) - checkPlayingStatusInterval = null - } - } - }, 30000) // 30秒后检查 - } catch (error) { - console.error('TTS error:', error) - setIsSpeaking(false) - } - }, [isSpeaking, message]) + // TTS功能已移至TTSButton组件 const dropdownItems = useMemo( () => [ @@ -428,7 +371,7 @@ const MessageMenubar: FC = (props) => { )} - {isAssistantMessage && ( + {isAssistantMessage && ttsEnabled && ( )} {!isUserMessage && ( @@ -458,13 +401,6 @@ const MessageMenubar: FC = (props) => { )} - {!isUserMessage && ttsEnabled && ( - - - - - - )} {isAssistantMessage && isGrouped && (