feat: [sound-logo] 아이 목소리 옵션 + 말하기 속도 조절 추가
- 스타일 옵션에 어린이(5~7세), 초등학생(8~12세), 청소년(13~18세) 추가 - 말하기 속도 슬라이더 추가 (매우느리게~매우빠르게 5단계) - 속도와 스타일을 TTS 프롬프트 지시문으로 조합하여 Gemini API에 전달 - 음성 목록 여성/남성/중성 순서로 정렬
This commit is contained in:
@@ -487,6 +487,7 @@ public function soundLogoTts(Request $request): JsonResponse
|
||||
'text' => 'required|string|max:200',
|
||||
'voice_name' => 'nullable|string|max:30',
|
||||
'voice_style' => 'nullable|string|max:100',
|
||||
'voice_speed' => 'nullable|integer|min:1|max:5',
|
||||
]);
|
||||
|
||||
$apiKey = config('services.gemini.api_key');
|
||||
@@ -498,13 +499,29 @@ public function soundLogoTts(Request $request): JsonResponse
|
||||
|
||||
$voiceName = $request->voice_name ?: 'Kore';
|
||||
$voiceStyle = $request->voice_style ?: '';
|
||||
$voiceSpeed = $request->voice_speed ?: 3;
|
||||
|
||||
// 속도 지시문 매핑
|
||||
$speedDirectives = [
|
||||
1 => '아주 천천히 또박또박 말해주세요.',
|
||||
2 => '조금 느린 속도로 말해주세요.',
|
||||
3 => '', // 보통 — 지시 없음
|
||||
4 => '조금 빠른 속도로 말해주세요.',
|
||||
5 => '아주 빠른 속도로 말해주세요.',
|
||||
];
|
||||
|
||||
// TTS에 전달할 텍스트 구성
|
||||
$ttsText = $request->text;
|
||||
|
||||
// 스타일 지시가 있으면 프롬프트로 감싸기
|
||||
$directives = [];
|
||||
if ($voiceStyle) {
|
||||
$ttsText = "{$voiceStyle}: {$ttsText}";
|
||||
$directives[] = $voiceStyle;
|
||||
}
|
||||
if (! empty($speedDirectives[$voiceSpeed])) {
|
||||
$directives[] = $speedDirectives[$voiceSpeed];
|
||||
}
|
||||
|
||||
$ttsText = $request->text;
|
||||
if (! empty($directives)) {
|
||||
$ttsText = implode(' ', $directives)." \n\n{$ttsText}";
|
||||
}
|
||||
|
||||
// 짧은 텍스트는 TTS 모델이 텍스트 생성으로 인식할 수 있으므로 발화 컨텍스트 추가
|
||||
|
||||
Reference in New Issue
Block a user