{"record":{"id":"7241c66693341df4","repo":"tinyhumansai/openhuman","slug":"voice-install-piper-auto-install-on-custom-voice","errorCode":null,"errorMessage":"[voice-install:piper] auto-install on custom voice failed:","messagePattern":"\\[voice-install:piper\\] auto-install on custom voice failed:","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"app/src/components/settings/panels/VoicePanel.tsx","lineNumber":1100,"sourceCode":"                            {v.label}\n                          </option>\n                        ))}\n                        <option value=\"__custom__\">{t('voice.providers.customVoiceOption')}</option>\n                      </SettingsSelect>\n                      {!PIPER_VOICE_PRESET_IDS.some(v => v === ttsVoice) && (\n                        <SettingsTextField\n                          aria-label={t('voice.providers.customVoiceAria')}\n                          data-testid=\"tts-voice-input\"\n                          value={ttsVoice}\n                          placeholder={t('voice.providers.customVoicePlaceholder')}\n                          disabled={isSavingProviders}\n                          onChange={e => setTtsVoice(e.target.value)}\n                          onBlur={() => {\n                            if (ttsVoice && ttsVoice !== voiceStatus?.tts_voice_id) {\n                              void persistProviders({ tts_voice: ttsVoice });\n                              void installPiper({ voiceId: ttsVoice }).catch(err =>\n                                console.warn(\n                                  '[voice-install:piper] auto-install on custom voice failed:',\n                                  err\n                                )\n                              );\n                            }\n                          }}\n                          className=\"mt-1 w-full\"\n                        />\n                      )}\n                      <p className=\"text-[11px] text-content-muted mt-0.5\">\n                        {t('voice.providers.piperVoicesDesc')}\n                      </p>\n                    </label>\n                  )}\n\n                  {/* ElevenLabs voice picker — shown when ElevenLabs is selected for TTS */}\n                  {ttsProvider === 'elevenlabs' && (\n                    <label className=\"block space-y-1\">\n                      <span className=\"text-xs font-medium text-content-muted dark:text-content-secondary\">","sourceCodeStart":1082,"sourceCodeEnd":1118,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/app/src/components/settings/panels/VoicePanel.tsx#L1082-L1118","documentation":"The automatic Piper TTS voice installation triggered by entering a custom voice name failed. When the user types a non-preset voice id in the custom voice field, the panel attempts to auto-install that voice; this warn records the failure, so the custom voice stays configured but has no installed artifact and TTS will fall back or error when it is used.","triggerScenarios":"Thrown at app/src/components/settings/panels/VoicePanel.tsx:1100 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check the warned error — a custom voice id that does not exist in the Piper voice catalog fails deterministically","Confirm the exact voice id spelling against the Piper voice catalog naming","Retry the install once the id is corrected or the network/download issue is resolved","Fall back to a preset voice if the custom voice cannot be installed"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"749120085864ce16e0f273c7b86fac7740b39c5b","analyzedAt":"2026-08-17T21:21:45.363Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}