@tritard/waterbrother 0.14.17 → 0.14.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/cli.js +2 -0
- package/src/voice.js +2 -1
package/package.json
CHANGED
package/src/cli.js
CHANGED
|
@@ -4140,6 +4140,8 @@ async function runTextTurnInteractive({
|
|
|
4140
4140
|
context.voiceSession.speakFull(renderedAssistantText, {
|
|
4141
4141
|
apiKey: context.runtime.apiKey,
|
|
4142
4142
|
baseUrl: context.runtime.baseUrl,
|
|
4143
|
+
}).catch((err) => {
|
|
4144
|
+
console.log(`[speak] TTS failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
4143
4145
|
});
|
|
4144
4146
|
}
|
|
4145
4147
|
|
package/src/voice.js
CHANGED
|
@@ -657,8 +657,9 @@ export async function setupVoice(onStatus) {
|
|
|
657
657
|
// Speak full text via xAI TTS API. Streams MP3 to temp file, plays via sox.
|
|
658
658
|
// Can be cancelled via stopSpeaking(). Requires grokConfig with apiKey.
|
|
659
659
|
async speakFull(text, { apiKey, baseUrl } = {}) {
|
|
660
|
-
if (!text || !apiKey) return;
|
|
660
|
+
if (!text || !apiKey) { process.stderr.write(`[speak] skipped: text=${!!text} apiKey=${!!apiKey}\n`); return; }
|
|
661
661
|
_ttsCancelled = false;
|
|
662
|
+
process.stderr.write(`[speak] starting TTS for ${text.length} chars\n`);
|
|
662
663
|
|
|
663
664
|
// Strip ANSI, markdown, code blocks, emojis
|
|
664
665
|
let clean = text.replace(/\x1b\[[0-9;]*m/g, "").replace(/```[\s\S]*?```/g, "").replace(/`[^`]+`/g, "");
|