From 61856190eeb515cb3b755a2e9db904d0c5eb8aef Mon Sep 17 00:00:00 2001 From: ddingjoo Date: Wed, 7 Jan 2026 09:41:52 +0900 Subject: [PATCH] =?UTF-8?q?[CR]=20TTS=20API=20=EB=B3=80=EA=B2=BD=20?= =?UTF-8?q?=EB=8C=80=EC=9D=91=20(#53)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - voiceService.synthesize: text -> messageId, roomId 파라미터 변경 - ChatRoomPage, ChatRoomModal handlePlayTTS 수정 - 백엔드 API 스펙 변경에 따른 필수 대응 --- src/domains/chat/services/chatService.js | 4 ++-- src/domains/freetalk/components/ChatRoomModal.jsx | 8 ++++---- src/domains/freetalk/pages/ChatRoomPage.jsx | 11 ++++++----- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/domains/chat/services/chatService.js b/src/domains/chat/services/chatService.js index 4d33f82..cdf9372 100644 --- a/src/domains/chat/services/chatService.js +++ b/src/domains/chat/services/chatService.js @@ -75,8 +75,8 @@ export const messageService = { // 음성 API export const voiceService = { // TTS 변환 - synthesize: async (text, voice = 'FEMALE') => { - return chatApi.post('/chat/voice/synthesize', { text, voice }) + synthesize: async (messageId, roomId, voice = 'FEMALE') => { + return chatApi.post('/chat/voice/synthesize', { messageId, roomId, voice }) }, } diff --git a/src/domains/freetalk/components/ChatRoomModal.jsx b/src/domains/freetalk/components/ChatRoomModal.jsx index e5f6dde..6f74fe3 100644 --- a/src/domains/freetalk/components/ChatRoomModal.jsx +++ b/src/domains/freetalk/components/ChatRoomModal.jsx @@ -176,12 +176,12 @@ const ChatRoomModal = ({ open, onClose, room, onLeave }) => { } // TTS 재생 (모든 메시지에서 가능) - const handlePlayTTS = async (messageId, text) => { + const handlePlayTTS = async (messageId) => { if (playingTTS === messageId) return setPlayingTTS(messageId) try { - const response = await voiceService.synthesize(text, settings.ttsVoice) + const response = await voiceService.synthesize(messageId, room.id, settings.ttsVoice) const responseData = response.data || response if (responseData.audioUrl) { const audio = new Audio(responseData.audioUrl) @@ -376,7 +376,7 @@ const ChatRoomModal = ({ open, onClose, room, onLeave }) => { <> handlePlayTTS(message.id, message.content)} + onClick={() => handlePlayTTS(message.id)} disabled={playingTTS === message.id} sx={{ p: 0.25 }} > @@ -410,7 +410,7 @@ const ChatRoomModal = ({ open, onClose, room, onLeave }) => { handlePlayTTS(message.id, message.content)} + onClick={() => handlePlayTTS(message.id)} disabled={playingTTS === message.id} sx={{ p: 0.25 }} > diff --git a/src/domains/freetalk/pages/ChatRoomPage.jsx b/src/domains/freetalk/pages/ChatRoomPage.jsx index 6a666a6..ce4257e 100644 --- a/src/domains/freetalk/pages/ChatRoomPage.jsx +++ b/src/domains/freetalk/pages/ChatRoomPage.jsx @@ -142,14 +142,15 @@ const ChatRoomPage = () => { } // TTS 재생 - const handlePlayTTS = async (messageId, text) => { + const handlePlayTTS = async (messageId) => { if (playingTTS === messageId) return setPlayingTTS(messageId) try { - const response = await voiceService.synthesize(text) - if (response.audioUrl) { - const audio = new Audio(response.audioUrl) + const response = await voiceService.synthesize(messageId, roomId) + const responseData = response.data || response + if (responseData.audioUrl) { + const audio = new Audio(responseData.audioUrl) audio.onended = () => setPlayingTTS(null) audio.onerror = () => setPlayingTTS(null) await audio.play() @@ -315,7 +316,7 @@ const ChatRoomPage = () => { handlePlayTTS(message.id, message.content)} + onClick={() => handlePlayTTS(message.id)} disabled={playingTTS === message.id} sx={{ p: 0.5 }} >