Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/domains/chat/services/chatService.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 })
},
}

Expand Down
8 changes: 4 additions & 4 deletions src/domains/freetalk/components/ChatRoomModal.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -376,7 +376,7 @@ const ChatRoomModal = ({ open, onClose, room, onLeave }) => {
<>
<IconButton
size="small"
onClick={() => handlePlayTTS(message.id, message.content)}
onClick={() => handlePlayTTS(message.id)}
disabled={playingTTS === message.id}
sx={{ p: 0.25 }}
>
Expand Down Expand Up @@ -410,7 +410,7 @@ const ChatRoomModal = ({ open, onClose, room, onLeave }) => {
<Box sx={{ display: 'flex', alignItems: 'center', gap: 0.25 }}>
<IconButton
size="small"
onClick={() => handlePlayTTS(message.id, message.content)}
onClick={() => handlePlayTTS(message.id)}
disabled={playingTTS === message.id}
sx={{ p: 0.25 }}
>
Expand Down
11 changes: 6 additions & 5 deletions src/domains/freetalk/pages/ChatRoomPage.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down Expand Up @@ -315,7 +316,7 @@ const ChatRoomPage = () => {
<Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>
<IconButton
size="small"
onClick={() => handlePlayTTS(message.id, message.content)}
onClick={() => handlePlayTTS(message.id)}
disabled={playingTTS === message.id}
sx={{ p: 0.5 }}
>
Expand Down