fix(review): address talk cleanup feedback

This commit is contained in:
Ayaan Zaidi
2026-03-20 10:45:32 +05:30
parent 4386a0ace8
commit 4a0341ed03
2 changed files with 39 additions and 67 deletions

View File

@@ -756,12 +756,9 @@ class TalkModeManager(
}
val suffix = resolveGatewayAudioSuffix(speech)
val tempFile =
withContext(Dispatchers.IO) {
File.createTempFile("tts_", suffix, context.cacheDir).apply {
writeBytes(audioBytes)
}
}
withContext(Dispatchers.IO) { File.createTempFile("tts_", suffix, context.cacheDir) }
try {
withContext(Dispatchers.IO) { tempFile.writeBytes(audioBytes) }
val player = MediaPlayer()
this.player = player
val finished = CompletableDeferred<Unit>()

View File

@@ -112,83 +112,58 @@ function buildTalkTtsConfig(
auto: "always",
provider,
};
const baseUrl = trimString(providerConfig.baseUrl);
const voiceId = trimString(providerConfig.voiceId);
const modelId = trimString(providerConfig.modelId);
const languageCode = trimString(providerConfig.languageCode);
if (provider === "elevenlabs") {
const seed = finiteNumber(providerConfig.seed);
const applyTextNormalization = normalizeTextNormalization(
providerConfig.applyTextNormalization,
);
const voiceSettings = readTalkVoiceSettings(providerConfig);
talkTts.elevenlabs = {
...baseTts.elevenlabs,
...(providerConfig.apiKey === undefined ? {} : { apiKey: providerConfig.apiKey }),
...(trimString(providerConfig.baseUrl) == null
? {}
: { baseUrl: trimString(providerConfig.baseUrl) }),
...(trimString(providerConfig.voiceId) == null
? {}
: { voiceId: trimString(providerConfig.voiceId) }),
...(trimString(providerConfig.modelId) == null
? {}
: { modelId: trimString(providerConfig.modelId) }),
...(finiteNumber(providerConfig.seed) == null
? {}
: { seed: finiteNumber(providerConfig.seed) }),
...(normalizeTextNormalization(providerConfig.applyTextNormalization) == null
? {}
: {
applyTextNormalization: normalizeTextNormalization(
providerConfig.applyTextNormalization,
),
}),
...(trimString(providerConfig.languageCode) == null
? {}
: { languageCode: trimString(providerConfig.languageCode) }),
...(readTalkVoiceSettings(providerConfig) == null
? {}
: { voiceSettings: readTalkVoiceSettings(providerConfig) }),
...(baseUrl == null ? {} : { baseUrl }),
...(voiceId == null ? {} : { voiceId }),
...(modelId == null ? {} : { modelId }),
...(seed == null ? {} : { seed }),
...(applyTextNormalization == null ? {} : { applyTextNormalization }),
...(languageCode == null ? {} : { languageCode }),
...(voiceSettings == null ? {} : { voiceSettings }),
};
} else if (provider === "openai") {
const speed = finiteNumber(providerConfig.speed);
const instructions = trimString(providerConfig.instructions);
talkTts.openai = {
...baseTts.openai,
...(providerConfig.apiKey === undefined ? {} : { apiKey: providerConfig.apiKey }),
...(trimString(providerConfig.baseUrl) == null
? {}
: { baseUrl: trimString(providerConfig.baseUrl) }),
...(trimString(providerConfig.modelId) == null
? {}
: { model: trimString(providerConfig.modelId) }),
...(trimString(providerConfig.voiceId) == null
? {}
: { voice: trimString(providerConfig.voiceId) }),
...(finiteNumber(providerConfig.speed) == null
? {}
: { speed: finiteNumber(providerConfig.speed) }),
...(trimString(providerConfig.instructions) == null
? {}
: { instructions: trimString(providerConfig.instructions) }),
...(baseUrl == null ? {} : { baseUrl }),
...(modelId == null ? {} : { model: modelId }),
...(voiceId == null ? {} : { voice: voiceId }),
...(speed == null ? {} : { speed }),
...(instructions == null ? {} : { instructions }),
};
} else if (provider === "microsoft") {
const outputFormat = trimString(providerConfig.outputFormat);
const pitch = trimString(providerConfig.pitch);
const rate = trimString(providerConfig.rate);
const volume = trimString(providerConfig.volume);
const proxy = trimString(providerConfig.proxy);
const timeoutMs = finiteNumber(providerConfig.timeoutMs);
talkTts.microsoft = {
...baseTts.microsoft,
enabled: true,
...(trimString(providerConfig.voiceId) == null
? {}
: { voice: trimString(providerConfig.voiceId) }),
...(trimString(providerConfig.languageCode) == null
? {}
: { lang: trimString(providerConfig.languageCode) }),
...(trimString(providerConfig.outputFormat) == null
? {}
: { outputFormat: trimString(providerConfig.outputFormat) }),
...(trimString(providerConfig.pitch) == null
? {}
: { pitch: trimString(providerConfig.pitch) }),
...(trimString(providerConfig.rate) == null ? {} : { rate: trimString(providerConfig.rate) }),
...(trimString(providerConfig.volume) == null
? {}
: { volume: trimString(providerConfig.volume) }),
...(trimString(providerConfig.proxy) == null
? {}
: { proxy: trimString(providerConfig.proxy) }),
...(finiteNumber(providerConfig.timeoutMs) == null
? {}
: { timeoutMs: finiteNumber(providerConfig.timeoutMs) }),
...(voiceId == null ? {} : { voice: voiceId }),
...(languageCode == null ? {} : { lang: languageCode }),
...(outputFormat == null ? {} : { outputFormat }),
...(pitch == null ? {} : { pitch }),
...(rate == null ? {} : { rate }),
...(volume == null ? {} : { volume }),
...(proxy == null ? {} : { proxy }),
...(timeoutMs == null ? {} : { timeoutMs }),
};
} else {
return { error: `talk.speak unavailable: unsupported talk provider '${resolved.provider}'` };