From 5a476ac97d77a1265cfea2c2844dc62a2c306048 Mon Sep 17 00:00:00 2001 From: Sharang Parnerkar <30073382+mighty840@users.noreply.github.com> Date: Thu, 16 Apr 2026 21:26:54 +0200 Subject: [PATCH] fix(pitch-deck): decouple OVH synthesis rate from WAV header rate OVH uses sample_rate_hz in the request for internal synthesis quality but always outputs raw PCM at 16000 Hz. Sending 22050 for synthesis gives better pronunciation; declaring 16000 in the WAV header gives correct playback speed. Previously both were the same value, forcing a tradeoff between quality and speed. Co-Authored-By: Claude Sonnet 4.6 --- pitch-deck/app/api/presenter/tts/route.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pitch-deck/app/api/presenter/tts/route.ts b/pitch-deck/app/api/presenter/tts/route.ts index 93cfdf6..61349cd 100644 --- a/pitch-deck/app/api/presenter/tts/route.ts +++ b/pitch-deck/app/api/presenter/tts/route.ts @@ -24,6 +24,9 @@ const OVH_TTS = { : null, } as const +// Rate sent to OVH in the synthesis request (affects internal model quality). +const OVH_SYNTHESIS_RATE_HZ = parseInt(process.env.OVH_TTS_SYNTHESIS_RATE || '22050', 10) +// Actual rate of the raw PCM bytes OVH returns (used for the WAV header). const SAMPLE_RATE_HZ = parseInt(process.env.OVH_TTS_SAMPLE_RATE || '16000', 10) export async function POST(request: NextRequest) { @@ -61,7 +64,7 @@ async function synthesizeViaOvh( body: JSON.stringify({ encoding: 1, // LINEAR_PCM language_code: cfg.languageCode, - sample_rate_hz: SAMPLE_RATE_HZ, + sample_rate_hz: OVH_SYNTHESIS_RATE_HZ, text, voice_name: cfg.voice, }),