Roadmap de ponta a ponta — não existe catálogo de vozes hoje. Duas coisas diferentes existem no projeto e nenhuma delas é isto:
O app NovelÁudio toca áudio pré-gravado (bucket privado chapter-audio, servido por URL assinada via a Edge Function audio-url) — a voz de cada capítulo é a voz da gravação, não uma escolha do ouvinte. Hoje 14 novelas têm narração real (novels.has_real_audio). 2. O app NovelAI (irmão de projeto Supabase, não o NovelÁudio) tem uma Edge Function de TTS que fala com um provedor de terceiro e usa uma voz padrão única, sem opção de escolha pelo leitor — e essa função não é consumida pelo NovelÁudio nem exposta a parceiro nenhum.
Nenhum dos dois é “vozes de IA alta fidelidade pt-BR, escolha de narrador pelo leitor” prometido na proposta técnica. Para este endpoint valer, precisa existir: um pipeline de TTS neural server-side com um catálogo real de vozes (nomes, idioma, amostra), desacoplado do provedor específico, e integrado tanto à narração sob demanda quanto à renderização em lote de chapter_audio. Nada disso está desenhado em detalhe ainda — este endpoint é um placeholder de contrato, não um desenho fechado como os demais desta especificação.
Client credentials — emitido uma única vez, de forma centralizada, pela Platform API (POST https://api.googa.com.br/v1/oauth2/token, ver Platform — OAuth2). Este domínio (api.novelai.com.br, que também atende NovelÁudio) só valida o token — via a chave pública do projeto Platform — nunca emite um token próprio. Este arquivo não redefine a operação de emissão, só declara os escopos novelaudio:* que também podem ser pedidos na mesma troca, ao lado dos novelai:*.
Response
200 - application/json
Lista de vozes. Hoje retornaria vazio ou um placeholder — ver descrição acima.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Googa Developers","description":"Documentação técnica das APIs da Googa — NovelAI, HistorinhAI e NovelÁudio. Integração via API, SSO, entitlements, billing, webhooks, segurança e LGPD.","colors":{"primary":"#6C63FF","light":"#8B85FF","dark":"#4A42D6"},"logo":{"light":"https://mintcdn.com/googa/57u-aPav27DBtVfv/logo/googa-developers-light.svg?fit=max\u0026auto=format\u0026n=57u-aPav27DBtVfv\u0026q=85\u0026s=e0a6a2555878f598d4b895ecab0626c0","dark":"https://mintcdn.com/googa/57u-aPav27DBtVfv/logo/googa-developers-dark.svg?fit=max\u0026auto=format\u0026n=57u-aPav27DBtVfv\u0026q=85\u0026s=e50f9a3861ec2af103639483e042c04d"},"favicon":"https://mintcdn.com/googa/57u-aPav27DBtVfv/logo/favicon.svg?fit=max\u0026auto=format\u0026n=57u-aPav27DBtVfv\u0026q=85\u0026s=d9042418fb793602eda9ca5cfab1fa4f","footer":{"socials":{"linkedin":"https://www.linkedin.com/company/googa"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"googa","hasAudioNarration":false,"actualSubdomain":"googa","customDomains":["developers.googa.com.br"],"gitSource":{"type":"github","owner":"googa-tech","repo":"googa-developers","deployBranch":"master","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6a875455e849cdeb6400f984","collectionId":"4d9e9a1e-c88d-4710-a739-cc3adf0090b3","liveDeploymentHistoryId":"6a875455e849cdeb6400f984","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6a875455e849cdeb6400f984:success","clientVersion":"0.0.4021","searchFilterCounts":[{"language":"default","tag":"Referência","count":23},{"language":"default","tag":"NovelAI","count":9},{"language":"default","tag":"API Platform","count":9},{"language":"default","tag":"Segurança \u0026 LGPD","count":8},{"language":"default","tag":"NovelÁudio","count":6},{"language":"default","tag":"Guias","count":5},{"language":"default","tag":"Visão geral","count":4},{"language":"default","tag":"Arquitetura \u0026 modelo de dados","count":3},{"language":"default","tag":"HistorinhAI","count":3},{"language":"default","tag":"Privacidade \u0026 LGPD","count":3}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"novelaudio/reference/voices/lista-vozes-de-narração-disponíveis","slug":"/novelaudio/reference/voices/lista-vozes-de-narração-disponíveis","pageMetadata":{"title":"Lista vozes de narração disponíveis","description":"**Roadmap de ponta a ponta — não existe catálogo de vozes hoje.** Duas coisas diferentes existem no projeto e nenhuma delas é isto:\n1. O app NovelÁudio toca **áudio pré-gravado** (bucket privado `chapter-audio`, servido por URL assinada via a Edge Function `audio-url`) — a voz de cada capítulo é a voz da gravação, não uma escolha do ouvinte. Hoje 14 novelas têm narração real (`novels.has_real_audio`). 2. O app NovelAI (irmão de projeto Supabase, não o NovelÁudio) tem uma Edge Function de TTS que fala com um provedor de terceiro e usa uma voz padrão única, sem opção de escolha pelo leitor — e essa função não é consumida pelo NovelÁudio nem exposta a parceiro nenhum.\nNenhum dos dois é \"vozes de IA alta fidelidade pt-BR, escolha de narrador pelo leitor\" prometido na proposta técnica. Para este endpoint valer, precisa existir: um pipeline de TTS neural server-side com um catálogo real de vozes (nomes, idioma, amostra), desacoplado do provedor específico, e integrado tanto à narração sob demanda quanto à renderização em lote de `chapter_audio`. Nada disso está desenhado em detalhe ainda — este endpoint é um placeholder de contrato, não um desenho fechado como os demais desta especificação.","deprecated":null,"version":null,"openapi":"/novelaudio/openapi.yaml get /voices","href":"/novelaudio/reference/voices/lista-vozes-de-narração-disponíveis","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n li: \"li\",\n ol: \"ol\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Roadmap de ponta a ponta — não existe catálogo de vozes hoje.\"\n }), \" Duas coisas diferentes existem no projeto e nenhuma delas é isto:\"]\n }), \"\\n\", _jsxs(_components.ol, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"O app NovelÁudio toca \", _jsx(_components.strong, {\n children: \"áudio pré-gravado\"\n }), \" (bucket privado \", _jsx(_components.code, {\n children: \"chapter-audio\"\n }), \", servido por URL assinada via a Edge Function \", _jsx(_components.code, {\n children: \"audio-url\"\n }), \") — a voz de cada capítulo é a voz da gravação, não uma escolha do ouvinte. Hoje 14 novelas têm narração real (\", _jsx(_components.code, {\n children: \"novels.has_real_audio\"\n }), \"). 2. O app NovelAI (irmão de projeto Supabase, não o NovelÁudio) tem uma Edge Function de TTS que fala com um provedor de terceiro e usa uma voz padrão única, sem opção de escolha pelo leitor — e essa função não é consumida pelo NovelÁudio nem exposta a parceiro nenhum.\\nNenhum dos dois é “vozes de IA alta fidelidade pt-BR, escolha de narrador pelo leitor” prometido na proposta técnica. Para este endpoint valer, precisa existir: um pipeline de TTS neural server-side com um catálogo real de vozes (nomes, idioma, amostra), desacoplado do provedor específico, e integrado tanto à narração sob demanda quanto à renderização em lote de \", _jsx(_components.code, {\n children: \"chapter_audio\"\n }), \". Nada disso está desenhado em detalhe ainda — este endpoint é um placeholder de contrato, não um desenho fechado como os demais desta especificação.\"]\n }), \"\\n\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Lista vozes de narração disponíveis","description":"**Roadmap de ponta a ponta — não existe catálogo de vozes hoje.** Duas coisas diferentes existem no projeto e nenhuma delas é isto:\n1. O app NovelÁudio toca **áudio pré-gravado** (bucket privado `chapter-audio`, servido por URL assinada via a Edge Function `audio-url`) — a voz de cada capítulo é a voz da gravação, não uma escolha do ouvinte. Hoje 14 novelas têm narração real (`novels.has_real_audio`). 2. O app NovelAI (irmão de projeto Supabase, não o NovelÁudio) tem uma Edge Function de TTS que fala com um provedor de terceiro e usa uma voz padrão única, sem opção de escolha pelo leitor — e essa função não é consumida pelo NovelÁudio nem exposta a parceiro nenhum.\nNenhum dos dois é \"vozes de IA alta fidelidade pt-BR, escolha de narrador pelo leitor\" prometido na proposta técnica. Para este endpoint valer, precisa existir: um pipeline de TTS neural server-side com um catálogo real de vozes (nomes, idioma, amostra), desacoplado do provedor específico, e integrado tanto à narração sob demanda quanto à renderização em lote de `chapter_audio`. Nada disso está desenhado em detalhe ainda — este endpoint é um placeholder de contrato, não um desenho fechado como os demais desta especificação.","deprecated":null,"version":null,"openapi":"/novelaudio/openapi.yaml get /voices","href":"/novelaudio/reference/voices/lista-vozes-de-narração-disponíveis","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"listVoices","tags":["Voices"],"summary":"Lista vozes de narração disponíveis","description":"**Roadmap de ponta a ponta — não existe catálogo de vozes hoje.** Duas coisas diferentes existem no projeto e nenhuma delas é isto:\n1. O app NovelÁudio toca **áudio pré-gravado** (bucket privado `chapter-audio`, servido por URL assinada via a Edge Function `audio-url`) — a voz de cada capítulo é a voz da gravação, não uma escolha do ouvinte. Hoje 14 novelas têm narração real (`novels.has_real_audio`). 2. O app NovelAI (irmão de projeto Supabase, não o NovelÁudio) tem uma Edge Function de TTS que fala com um provedor de terceiro e usa uma voz padrão única, sem opção de escolha pelo leitor — e essa função não é consumida pelo NovelÁudio nem exposta a parceiro nenhum.\nNenhum dos dois é \"vozes de IA alta fidelidade pt-BR, escolha de narrador pelo leitor\" prometido na proposta técnica. Para este endpoint valer, precisa existir: um pipeline de TTS neural server-side com um catálogo real de vozes (nomes, idioma, amostra), desacoplado do provedor específico, e integrado tanto à narração sob demanda quanto à renderização em lote de `chapter_audio`. Nada disso está desenhado em detalhe ainda — este endpoint é um placeholder de contrato, não um desenho fechado como os demais desta especificação.","responses":{"200":"280f7e22-6aa9-45f9-bad0-efc686356b14"},"method":"get","type":"path","servers":["ccc65d77-8154-440a-a698-c3ad276d9890","5dd7f1f8-40ad-418c-843d-763c8f6753f6"],"security":["5954ac05-ca44-4f39-a6d2-9594bedfabbf"],"path":"/voices","baseUrlOptions":["https://api.novelai.com.br/v1","https://sandbox.novelai.com.br/v1"],"title":"Lista vozes de narração disponíveis","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"responses":{"280f7e22-6aa9-45f9-bad0-efc686356b14":{"description":"Lista de vozes. Hoje retornaria vazio ou um placeholder — ver descrição acima.","content":{"application/json":{"schema":{"type":"object","properties":{"voices":{"type":"array","items":{"type":"object","description":"Formato de contrato proposto — nenhum valor real existe hoje (ver descrição de `GET /voices`).","properties":{"voice_id":{"type":"string","uniqueKey":"voices.items.[INDEX].voice_id","typeLabel":"string"},"name":{"type":"string","uniqueKey":"voices.items.[INDEX].name","typeLabel":"string"},"language":{"type":"string","example":"pt-BR","uniqueKey":"voices.items.[INDEX].language","typeLabel":"string"},"sample_url":{"oneOf":[{"type":"string","format":"uri","uniqueKey":"voices.items.[INDEX].sample_url.oneOf.0","typeLabel":"string\u003curi>"},{"type":"null","format":"uri","uniqueKey":"voices.items.[INDEX].sample_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"voices.items.[INDEX].sample_url","typeLabel":"string\u003curi> | null"}},"uniqueKey":"voices.items.[INDEX]","typeLabel":"object"},"uniqueKey":"voices","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"voices":[{"voice_id":"\u003cstring>","name":"\u003cstring>","language":"pt-BR","sample_url":"\u003cstring>"}]}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"5954ac05-ca44-4f39-a6d2-9594bedfabbf":{"partnerOAuth2":{"type":"oauth2","description":"Client credentials — emitido **uma única vez**, de forma centralizada, pela Platform API (`POST https://api.googa.com.br/v1/oauth2/token`, ver [Platform — OAuth2](/platform/reference/oauth2/troca-client-credentials-por-um-token-de-acesso-de-parceiro)). Este domínio (`api.novelai.com.br`, que também atende NovelÁudio) só valida o token — via a chave pública do projeto Platform — nunca emite um token próprio. Este arquivo não redefine a operação de emissão, só declara os escopos `novelaudio:*` que também podem ser pedidos na mesma troca, ao lado dos `novelai:*`.","flows":{"clientCredentials":{"tokenUrl":"https://api.googa.com.br/v1/oauth2/token","scopes":{"novelaudio:audio:read":"Consultar metadados de áudio e emitir URLs de streaming","novelaudio:playback:read":"Consultar posição de reprodução","novelaudio:playback:write":"Atualizar posição de reprodução","novelaudio:voices:read":"Consultar o catálogo de vozes de narração (roadmap — ver `GET /voices`)"}}},"scopes":[]}}},"servers":{"ccc65d77-8154-440a-a698-c3ad276d9890":{"url":"https://api.novelai.com.br/v1","description":"Produção (proposto). Mesmo domínio e mesmo backend físico do NovelAI — NÃO é um domínio separado do NovelÁudio. Roteamento por recurso, não por host."},"5dd7f1f8-40ad-418c-843d-763c8f6753f6":{"url":"https://sandbox.novelai.com.br/v1","description":"Sandbox (proposto) — dados fictícios, sem impacto em billing real."}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"oauth2","description":"Client credentials — emitido **uma única vez**, de forma centralizada, pela Platform API (`POST https://api.googa.com.br/v1/oauth2/token`, ver [Platform — OAuth2](/platform/reference/oauth2/troca-client-credentials-por-um-token-de-acesso-de-parceiro)). Este domínio (`api.novelai.com.br`, que também atende NovelÁudio) só valida o token — via a chave pública do projeto Platform — nunca emite um token próprio. Este arquivo não redefine a operação de emissão, só declara os escopos `novelaudio:*` que também podem ser pedidos na mesma troca, ao lado dos `novelai:*`.","flows":{"clientCredentials":{"tokenUrl":"https://api.googa.com.br/v1/oauth2/token","scopes":{"novelaudio:audio:read":"Consultar metadados de áudio e emitir URLs de streaming","novelaudio:playback:read":"Consultar posição de reprodução","novelaudio:playback:write":"Atualizar posição de reprodução","novelaudio:voices:read":"Consultar o catálogo de vozes de narração (roadmap — ver `GET /voices`)"}}},"scopes":[]},"schema":{"title":"OAuth2 Auth","type":"string","isRequired":true,"description":"Client credentials — emitido **uma única vez**, de forma centralizada, pela Platform API (`POST https://api.googa.com.br/v1/oauth2/token`, ver [Platform — OAuth2](/platform/reference/oauth2/troca-client-credentials-por-um-token-de-acesso-de-parceiro)). Este domínio (`api.novelai.com.br`, que também atende NovelÁudio) só valida o token — via a chave pública do projeto Platform — nunca emite um token próprio. Este arquivo não redefine a operação de emissão, só declara os escopos `novelaudio:*` que também podem ser pedidos na mesma troca, ao lado dos `novelai:*`.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"partnerOAuth2","name":"Authorization"}],"title":"partnerOAuth2"}]},"originalFileLocation":"novelaudio/openapi.yaml"},"subdomain":"googa","siteName":"Googa Developers","title":"Lista vozes de narração disponíveis - Googa Developers","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-03T21:36:40.486Z","originalFileLocation":"novelaudio/reference/voices/lista-vozes-de-narração-disponíveis.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Roadmap de ponta a ponta — não existe catálogo de vozes hoje. Duas coisas diferentes existem no projeto e nenhuma delas é isto: 1. O app NovelÁudio toca áudio pré-gravado (bucket privado chapter-audio, servido por URL assinada via a Edge Function audio-url) — a voz de cada capítulo é a voz da gravação, não uma escolha do ouvinte. Hoje 14 novelas têm narração real (novels.has_real_audio). 2. O app NovelAI (irmão de projeto Supabase, não o NovelÁudio) tem uma Edge Function de TTS que fala com um provedor de terceiro e usa uma voz padrão única, sem opção de escolha pelo leitor — e essa função não é consumida pelo NovelÁudio nem exposta a parceiro nenhum. Nenhum dos dois é \u0026quot;vozes de IA alta fidelidade pt-BR, escolha de narrador pelo leitor\u0026quot; prometido na proposta técnica. Para este endpoint valer, precisa existir: um pipeline de TTS neural server-side com um catálogo real de vozes (nomes, idioma, amostra), desacoplado do provedor específico, e integrado tanto à narração sob demanda quanto à renderização em lote de chapter_audio. Nada disso está desenhado em detalhe ainda — este endpoint é um placeholder de contrato, não um desenho fechado como os demais desta especificação.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Googa Developers\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/googa/P93VhvFgH0upO3di/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/googa/P93VhvFgH0upO3di/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/googa/P93VhvFgH0upO3di/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/googa/P93VhvFgH0upO3di/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/googa/P93VhvFgH0upO3di/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/googa/P93VhvFgH0upO3di/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/googa/P93VhvFgH0upO3di/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/googa/P93VhvFgH0upO3di/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/googa/P93VhvFgH0upO3di/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Lista vozes de narração disponíveis - Googa Developers\">\u003cmeta data-mint-head property=\"og:description\" content=\"Roadmap de ponta a ponta — não existe catálogo de vozes hoje. Duas coisas diferentes existem no projeto e nenhuma delas é isto: 1. O app NovelÁudio toca áudio pré-gravado (bucket privado chapter-audio, servido por URL assinada via a Edge Function audio-url) — a voz de cada capítulo é a voz da gravação, não uma escolha do ouvinte. Hoje 14 novelas têm narração real (novels.has_real_audio). 2. O app NovelAI (irmão de projeto Supabase, não o NovelÁudio) tem uma Edge Function de TTS que fala com um provedor de terceiro e usa uma voz padrão única, sem opção de escolha pelo leitor — e essa função não é consumida pelo NovelÁudio nem exposta a parceiro nenhum. Nenhum dos dois é \u0026quot;vozes de IA alta fidelidade pt-BR, escolha de narrador pelo leitor\u0026quot; prometido na proposta técnica. Para este endpoint valer, precisa existir: um pipeline de TTS neural server-side com um catálogo real de vozes (nomes, idioma, amostra), desacoplado do provedor específico, e integrado tanto à narração sob demanda quanto à renderização em lote de chapter_audio. Nada disso está desenhado em detalhe ainda — este endpoint é um placeholder de contrato, não um desenho fechado como os demais desta especificação.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Googa Developers\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developers.googa.com.br/novelaudio/reference/voices/lista-vozes-de-narração-disponíveis\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://googa.mintlify.app/_mintlify/api/og/v2?division=Voices\u0026amp;title=Lista+vozes+de+narra%C3%A7%C3%A3o+dispon%C3%ADveis\u0026amp;description=**Roadmap+de+ponta+a+ponta+%E2%80%94+n%C3%A3o+existe+cat%C3%A1logo+de+vozes+hoje.**+Duas+coisas+diferentes+existem+no+projeto+e+nenhuma+delas+%C3%A9+isto%3A%0A1.+O+app+Novel%C3%81udio+toca+**%C3%A1\u0026amp;theme=fcf602f6cc84fd27c8bf85fd\u0026amp;signature=c1ba0a132940a51d4bf0a4300c9ab5038dc630962a6441bcab41c006a6f5dd6c\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Lista vozes de narração disponíveis - Googa Developers\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Roadmap de ponta a ponta — não existe catálogo de vozes hoje. Duas coisas diferentes existem no projeto e nenhuma delas é isto: 1. O app NovelÁudio toca áudio pré-gravado (bucket privado chapter-audio, servido por URL assinada via a Edge Function audio-url) — a voz de cada capítulo é a voz da gravação, não uma escolha do ouvinte. Hoje 14 novelas têm narração real (novels.has_real_audio). 2. O app NovelAI (irmão de projeto Supabase, não o NovelÁudio) tem uma Edge Function de TTS que fala com um provedor de terceiro e usa uma voz padrão única, sem opção de escolha pelo leitor — e essa função não é consumida pelo NovelÁudio nem exposta a parceiro nenhum. Nenhum dos dois é \u0026quot;vozes de IA alta fidelidade pt-BR, escolha de narrador pelo leitor\u0026quot; prometido na proposta técnica. Para este endpoint valer, precisa existir: um pipeline de TTS neural server-side com um catálogo real de vozes (nomes, idioma, amostra), desacoplado do provedor específico, e integrado tanto à narração sob demanda quanto à renderização em lote de chapter_audio. Nada disso está desenhado em detalhe ainda — este endpoint é um placeholder de contrato, não um desenho fechado como os demais desta especificação.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://googa.mintlify.app/_mintlify/api/og/v2?division=Voices\u0026amp;title=Lista+vozes+de+narra%C3%A7%C3%A3o+dispon%C3%ADveis\u0026amp;description=**Roadmap+de+ponta+a+ponta+%E2%80%94+n%C3%A3o+existe+cat%C3%A1logo+de+vozes+hoje.**+Duas+coisas+diferentes+existem+no+projeto+e+nenhuma+delas+%C3%A9+isto%3A%0A1.+O+app+Novel%C3%81udio+toca+**%C3%A1\u0026amp;theme=fcf602f6cc84fd27c8bf85fd\u0026amp;signature=c1ba0a132940a51d4bf0a4300c9ab5038dc630962a6441bcab41c006a6f5dd6c\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/googa/P93VhvFgH0upO3di/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Googa Developers\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#6C63FF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developers.googa.com.br/novelaudio/reference/voices/lista-vozes-de-narração-disponíveis\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/novelaudio/reference/voices/lista-vozes-de-narra%C3%A7%C3%A3o-dispon%C3%ADveis.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://developers.googa.com.br/#organization\",\"name\":\"Googa Developers\",\"url\":\"https://developers.googa.com.br\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/googa/57u-aPav27DBtVfv/logo/googa-developers-light.svg?fit=max\u0026auto=format\u0026n=57u-aPav27DBtVfv\u0026q=85\u0026s=e0a6a2555878f598d4b895ecab0626c0\"}},{\"@type\":\"WebSite\",\"@id\":\"https://developers.googa.com.br#website\",\"name\":\"Googa Developers\",\"url\":\"https://developers.googa.com.br\",\"publisher\":{\"@id\":\"https://developers.googa.com.br/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developers.googa.com.br/novelaudio/reference/voices/lista-vozes-de-narra%C3%A7%C3%A3o-dispon%C3%ADveis#webpage\",\"url\":\"https://developers.googa.com.br/novelaudio/reference/voices/lista-vozes-de-narra%C3%A7%C3%A3o-dispon%C3%ADveis\",\"name\":\"Lista vozes de narração disponíveis\",\"description\":\"Roadmap de ponta a ponta — não existe catálogo de vozes hoje. Duas coisas diferentes existem no projeto e nenhuma delas é isto: 1. O app NovelÁudio toca áudio pré-gravado (bucket privado chapter-audio, servido por URL assinada via a Edge Function audio-url) — a voz de cada capítulo é a voz da gravação, não uma escolha do ouvinte. Hoje 14 novelas têm narração real (novels.has_real_audio). 2. O app NovelAI (irmão de projeto Supabase, não o NovelÁudio) tem uma Edge Function de TTS que fala com um provedor de terceiro e usa uma voz padrão única, sem opção de escolha pelo leitor — e essa função não é consumida pelo NovelÁudio nem exposta a parceiro nenhum. Nenhum dos dois é \\\"vozes de IA alta fidelidade pt-BR, escolha de narrador pelo leitor\\\" prometido na proposta técnica. Para este endpoint valer, precisa existir: um pipeline de TTS neural server-side com um catálogo real de vozes (nomes, idioma, amostra), desacoplado do provedor específico, e integrado tanto à narração sob demanda quanto à renderização em lote de chapter_audio. Nada disso está desenhado em detalhe ainda — este endpoint é um placeholder de contrato, não um desenho fechado como os demais desta especificação.\",\"dateModified\":\"2026-08-03T21:36:40.486Z\",\"isPartOf\":{\"@id\":\"https://developers.googa.com.br#website\"},\"breadcrumb\":{\"@id\":\"https://developers.googa.com.br/novelaudio/reference/voices/lista-vozes-de-narra%C3%A7%C3%A3o-dispon%C3%ADveis#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developers.googa.com.br/novelaudio/reference/voices/lista-vozes-de-narra%C3%A7%C3%A3o-dispon%C3%ADveis#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Referência\",\"item\":\"https://developers.googa.com.br/novelaudio/reference/audio-metadata/metadados-de-%C3%A1udio-de-uma-novela-por-cap%C3%ADtulo\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Lista vozes de narração disponíveis\",\"item\":\"https://developers.googa.com.br/novelaudio/reference/voices/lista-vozes-de-narra%C3%A7%C3%A3o-dispon%C3%ADveis\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://developers.googa.com.br/novelaudio/reference/voices/lista-vozes-de-narra%C3%A7%C3%A3o-dispon%C3%ADveis#apireference\",\"headline\":\"Lista vozes de narração disponíveis\",\"name\":\"Lista vozes de narração disponíveis\",\"description\":\"Roadmap de ponta a ponta — não existe catálogo de vozes hoje. Duas coisas diferentes existem no projeto e nenhuma delas é isto: 1. O app NovelÁudio toca áudio pré-gravado (bucket privado chapter-audio, servido por URL assinada via a Edge Function audio-url) — a voz de cada capítulo é a voz da gravação, não uma escolha do ouvinte. Hoje 14 novelas têm narração real (novels.has_real_audio). 2. O app NovelAI (irmão de projeto Supabase, não o NovelÁudio) tem uma Edge Function de TTS que fala com um provedor de terceiro e usa uma voz padrão única, sem opção de escolha pelo leitor — e essa função não é consumida pelo NovelÁudio nem exposta a parceiro nenhum. Nenhum dos dois é \\\"vozes de IA alta fidelidade pt-BR, escolha de narrador pelo leitor\\\" prometido na proposta técnica. Para este endpoint valer, precisa existir: um pipeline de TTS neural server-side com um catálogo real de vozes (nomes, idioma, amostra), desacoplado do provedor específico, e integrado tanto à narração sob demanda quanto à renderização em lote de chapter_audio. Nada disso está desenhado em detalhe ainda — este endpoint é um placeholder de contrato, não um desenho fechado como os demais desta especificação.\",\"url\":\"https://developers.googa.com.br/novelaudio/reference/voices/lista-vozes-de-narra%C3%A7%C3%A3o-dispon%C3%ADveis\",\"mainEntityOfPage\":{\"@id\":\"https://developers.googa.com.br/novelaudio/reference/voices/lista-vozes-de-narra%C3%A7%C3%A3o-dispon%C3%ADveis#webpage\"},\"dateModified\":\"2026-08-03T21:36:40.486Z\",\"publisher\":{\"@id\":\"https://developers.googa.com.br/#organization\"},\"isPartOf\":{\"@id\":\"https://developers.googa.com.br#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Googa Developers\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Googa Developers","nav":{"global":null,"tabs":[{"tab":"Guias","pages":[{"title":"Guias","href":""}]},{"tab":"API Platform","pages":[{"title":"API Platform","href":"/platform/overview"}]},{"tab":"HistorinhAI","pages":[{"title":"HistorinhAI","href":"/historinhai/overview"}]},{"tab":"NovelAI","pages":[{"title":"NovelAI","href":"/novelai/overview"}]},{"tab":"NovelÁudio","groups":[{"group":"Visão geral","pages":[{"title":"NovelÁudio — visão geral","href":"/novelaudio/overview"}]},{"group":"Referência","pages":[{"group":"Audio Metadata","pages":[{"title":"Metadados de áudio de uma novela (por capítulo)","deprecated":null,"version":null,"openapi":"/novelaudio/openapi.yaml get /novels/{id}/audio","href":"/novelaudio/reference/audio-metadata/metadados-de-áudio-de-uma-novela-por-capítulo"}]},{"group":"Streaming","pages":[{"title":"Emite uma URL de reprodução assinada para um capítulo liberado","deprecated":null,"version":null,"openapi":"/novelaudio/openapi.yaml get /novels/{id}/chapters/{chapterNumber}/stream","href":"/novelaudio/reference/streaming/emite-uma-url-de-reprodução-assinada-para-um-capítulo-liberado"}]},{"group":"Playback","pages":[{"title":"Consulta a posição de reprodução do assinante em uma novela","deprecated":null,"version":null,"openapi":"/novelaudio/openapi.yaml get /subscribers/{id}/playback-position","href":"/novelaudio/reference/playback/consulta-a-posição-de-reprodução-do-assinante-em-uma-novela"},{"title":"Atualiza a posição de reprodução do assinante em uma novela","description":"Upsert por (assinante, novela) — equivalente ao `onConflict: \"user_id,novel_id\"` já usado pelo app oficial. Chamar de novo com o mesmo `novel_id` substitui a posição anterior; não acumula histórico — por isso repetir a chamada é seguro, sem precisar de header de idempotência (o mecanismo de `Idempotency-Key` chegou a ser proposto, mas não está implementado em nenhuma API Googa).","deprecated":null,"version":null,"openapi":"/novelaudio/openapi.yaml put /subscribers/{id}/playback-position","href":"/novelaudio/reference/playback/atualiza-a-posição-de-reprodução-do-assinante-em-uma-novela"}]},{"group":"Voices","pages":[{"title":"Lista vozes de narração disponíveis","deprecated":null,"version":null,"openapi":"/novelaudio/openapi.yaml get /voices","href":"/novelaudio/reference/voices/lista-vozes-de-narração-disponíveis"}]}]}]},{"tab":"Segurança \u0026 LGPD","pages":[{"title":"Segurança \u0026 LGPD","href":"/security/overview"}]}]},"title":"Lista vozes de narração disponíveis - Googa Developers","buildId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","deploymentId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-26-lDe7V.js","utils-CWQmgYtH.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-4-Aw3rSD.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-C2zjXYA5.js","snippetPresets-DFmpFA7C.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-FJpQavWq.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-D_GvPF7k.js","shallow-Bs2ZB0NO.js","getApiPlaygroundDisplay-DCcqJJk-.js","CodeSnippet-DzDxawVe.js","CodeSnippets-aUr7fU-7.js","Page-CT9uE8Ip.js","getPastedJson-Y1fKsj_I.js","icon-DI4zTsDr.js","MethodPill-C0nDlmSQ.js","DuplicateIcon-NUXbx2nQ.js","createIcon-BdTHrPAi.js","DynamicMarkdown-CtpgKJwj.js","SectionHeading-B3x35tOt.js","axios-vUo_bRtp.js","Markdown-3OmurJMP.js","clsx-DMKzROTp.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-1ms6tsT-.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-Ke9xIMFx.js"]}