TTSHelper - GachonCapstoneTeam/TTS_JAVA GitHub Wiki

πŸ—£οΈ TTSHelper

TTSHelperλŠ” Google Cloud Text-to-Speech APIλ₯Ό 톡해 ν…μŠ€νŠΈλ₯Ό μŒμ„±(MP3 파일)으둜 λ³€ν™˜ν•˜κ³ , μ•±μ˜ μ˜€λ””μ˜€ μž¬μƒ 흐름에 ν†΅ν•©ν•˜κΈ° μœ„ν•œ μœ ν‹Έλ¦¬ν‹° ν΄λž˜μŠ€μž…λ‹ˆλ‹€.


βœ… μ£Όμš” κΈ°λŠ₯ μš”μ•½

κΈ°λŠ₯ μ„€λͺ…
ν…μŠ€νŠΈ β†’ μŒμ„± λ³€ν™˜ Google TTS APIλ₯Ό μ‚¬μš©ν•΄ ν…μŠ€νŠΈλ₯Ό MP3 μ˜€λ””μ˜€ 파일둜 λ³€ν™˜
μ˜€λ””μ˜€ 파일 캐싱 λ³€ν™˜λœ MP3λŠ” μΊμ‹œ 디렉토리에 μ €μž₯ν•˜μ—¬ μž¬μš”μ²­ λ°©μ§€
λ³€ν™˜ μ™„λ£Œ 콜백 제곡 λ³€ν™˜μ΄ μ™„λ£Œλ˜λ©΄ 콜백 μΈν„°νŽ˜μ΄μŠ€λ‘œ μ•Œλ¦Ό
κΈ°λ³Έ μŒμ„± μž¬μƒ 지원 ν…ŒμŠ€νŠΈμš© κΈ°λ³Έ MP3κ°€ μ‘΄μž¬ν•  경우 λ°”λ‘œ μž¬μƒ κ°€λŠ₯
μ‹€νŒ¨ μ‹œ Toast μ•ˆλ‚΄ μ—λŸ¬ λ°œμƒ μ‹œ μ‚¬μš©μžμ—κ²Œ Toast둜 ν”Όλ“œλ°± 제곡

μ˜€λ””μ˜€ μž¬μƒ


πŸ”§ μ£Όμš” 둜직 μ„€λͺ…

πŸ“Œ ν…μŠ€νŠΈλ₯Ό TTS μš”μ²­μœΌλ‘œ λ³€ν™˜

data.put("input", new JSONObject().put("text", text));
data.put("voice", new JSONObject().put("languageCode", "ko-KR"));
data.put("audioConfig", new JSONObject().put("audioEncoding", "MP3"));
  • JSON ν˜•νƒœλ‘œ Google TTS API에 μš”μ²­ν•  데이터λ₯Ό κ΅¬μ„±ν•©λ‹ˆλ‹€.

πŸ“Œ 이미 μ‘΄μž¬ν•˜λŠ” μ˜€λ””μ˜€ 파일 확인

if (audioFile.exists()) {
    listener.onAudioFileReady(audioFile);
    return;
}
  • λ™μΌν•œ 파일 이름이 이미 μΊμ‹œμ— μ‘΄μž¬ν•˜λ©΄ API 호좜 없이 μ¦‰μ‹œ μž¬μƒ κ°€λŠ₯ν•˜λ„λ‘ μ²˜λ¦¬ν•©λ‹ˆλ‹€.

πŸ“Œ μ˜€λ””μ˜€ 파일 μ €μž₯

byte[] decodedAudio = Base64.decode(audioContentEncoded, Base64.DEFAULT);
try (FileOutputStream fos = new FileOutputStream(audioFile)) {
    fos.write(decodedAudio);
    listener.onAudioFileReady(audioFile);
}
  • TTS μ‘λ‹΅μ—μ„œ 받은 Base64 μΈμ½”λ”©λœ μŒμ„±μ„ λ””μ½”λ”© ν›„ MP3 파일둜 μ €μž₯ν•©λ‹ˆλ‹€.

πŸ”— κ΄€λ ¨ 클래슀 및 μ‚¬μš© μœ„μΉ˜

  • AudioService: μ˜€λ””μ˜€ μž¬μƒ 처리
  • ReportAdapter 및 HomeFragmentμ—μ„œ μ‚¬μš©λ˜μ–΄ TTS κ²°κ³Όλ₯Ό μž¬μƒ

⚠️ μ°Έκ³ : TTSHelper ν΄λž˜μŠ€λŠ” Google Cloud TTS API ν‚€κ°€ ν•„μš”ν•˜λ©°, μ‚¬μš©λŸ‰μ— 따라 λΉ„μš©μ΄ 청ꡬ될 수 μžˆμŠ΅λ‹ˆλ‹€.