From dd608f831c9dff4e73a5c508e9c1565eb5bedd51 Mon Sep 17 00:00:00 2001 From: Jeff Emmett Date: Thu, 16 Apr 2026 15:51:31 -0400 Subject: [PATCH] =?UTF-8?q?tweak(mi-voice):=20quiet=20feminine=20=E2=80=94?= =?UTF-8?q?=20Emma,=20volume=200.25,=20neutral=20pitch?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit User preference: quiet + feminine. Swap Andrew (male) for Emma (calmer, softer female than Aria). Drop volume 0.3 -> 0.25, reset pitch to natural (deeper shift made it sound male). Rate stays slow. --- lib/mi-voice-bridge.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/mi-voice-bridge.ts b/lib/mi-voice-bridge.ts index 1b3b991e..45a99628 100644 --- a/lib/mi-voice-bridge.ts +++ b/lib/mi-voice-bridge.ts @@ -30,7 +30,7 @@ export class MiVoiceBridge { constructor(opts: MiVoiceBridgeOptions = {}) { this.#bridgeUrl = opts.bridgeUrl ?? DEFAULT_BRIDGE; - this.#voice = opts.voice ?? "en-US-AndrewMultilingualNeural"; + this.#voice = opts.voice ?? "en-US-EmmaMultilingualNeural"; this.#onStateChange = opts.onStateChange ?? null; } @@ -191,7 +191,7 @@ export class MiVoiceBridge { const res = await fetch(`${this.#bridgeUrl}${TTS_PATH}`, { method: "POST", headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ text, voice: this.#voice, volume: 0.3, rate: "-10%", pitch: "-6Hz" }), + body: JSON.stringify({ text, voice: this.#voice, volume: 0.25, rate: "-8%", pitch: "+0Hz" }), }); if (!res.ok) { ws.removeEventListener("message", handler); @@ -224,8 +224,8 @@ export class MiVoiceBridge { this.#speakResolve = resolve; const utterance = new SpeechSynthesisUtterance(text); utterance.rate = 0.95; - utterance.pitch = 0.85; - utterance.volume = 0.3; + utterance.pitch = 1.0; + utterance.volume = 0.25; utterance.onend = () => { this.#speakResolve = null; resolve();