{
  "aboutHtml": "<p>S2 Pro é o modelo de segunda geração de conversão de texto em voz da Fish Audio para narração expressiva, diálogo de personagens e respostas de voz em conversação. Transforma um guião escrito em áudio e suporta indicações em linguagem natural ao nível da palavra ou da expressão. A geração anterior S1 utiliza indicações entre parênteses curvos, enquanto S2 Pro utiliza nativamente parênteses retos e suporta vários intervenientes num único pedido de síntese. O fabricante disponibiliza os pesos de S2 Pro e código de ajuste fino para trabalho de personalização separado; um pedido de voz normal utiliza o modelo selecionado em vez de treinar um novo.</p><p>Escreva primeiro o conteúdo falado e coloque depois uma instrução de interpretação imediatamente antes da palavra ou expressão que deve afetar. As indicações podem descrever um sussurro, uma reação, uma pausa, uma mudança emocional ou um estilo de fala livre. Para uma explicação curta de produto, mantenha a frase factual clara e coloque ênfase apenas onde o ouvinte deve notar uma distinção. Para uma fala de personagem, descreva a mudança emocional no momento em que ocorre, em vez de atribuir um único estado de espírito fixo à passagem inteira.</p><p>As etiquetas entre parênteses retos são descrições de domínio aberto, em vez de um menu fechado. Os exemplos incluem [whispering], [sigh], [long pause] e uma expressão como [speaking slowly, almost hesitant]. As etiquetas podem surgir a meio de uma frase e afetam a fala que se segue. Uma etiqueta descritiva precisa de texto efetivo a seguir; uma instrução isolada pode produzir resultados imprevisíveis. Comece por uma ou duas indicações úteis antes de acrescentar camadas, pois etiquetas concorrentes podem dificultar a interpretação pretendida. Diferentes referências de voz podem responder à mesma indicação com intensidades diferentes.</p><p>A versão S2 descreve aproximadamente 80 idiomas e apresenta exemplos de indicações de interpretação escritas no mesmo idioma do guião. Prepare o texto no idioma em que deve ser pronunciado e preserve nomes, unidades e abreviaturas que exijam uma leitura específica. Uma narração multilingue pode manter a voz pretendida ao mudar o idioma do guião, mas o resultado final continua a exigir escuta para verificar pronúncia e continuidade. A síntese produz o conteúdo fornecido em voz, em vez de decidir as informações que a aplicação deve transmitir.</p><p>Para um só interveniente, escolha um identificador de voz guardado ou forneça áudio de referência e a transcrição correspondente. O produtor recomenda uma amostra limpa de 10–30 segundos para condicionamento instantâneo. Para diálogo, utilize marcadores de interveniente como &lt;|speaker:0|&gt; e &lt;|speaker:1|&gt;, com uma lista ordenada de identificadores de voz ou grupos de referência separados para os intervenientes. O marcador numérico seleciona a entrada de voz correspondente; mantenha a ordem fixa à medida que a conversa avança. As indicações de interpretação em linguagem natural e a seleção de intervenientes têm funções diferentes no guião.</p><p>A saída de áudio pode ser MP3, WAV, PCM sem contentor ou Opus. MP3 tem a predefinição de 128 kbps e disponibiliza 64 ou 192 kbps; a saída Opus utiliza 48 kHz, enquanto WAV e PCM suportam as suas opções de taxa de amostragem documentadas em mono de 16 bits. Escolha o formato em função do destino efetivo: um ficheiro a guardar para narração ou blocos de áudio adequados para reprodução. O fluxo de voz do produtor descreve também transmissão de texto em direto quando o guião chega progressivamente. O resultado gerado deve manter-se associado ao guião completo e às vozes selecionadas.</p><p>A velocidade pode ser ajustada entre 0.5 e 2.0, com controlos de volume e de normalização do nível sonoro da saída. A normalização do texto melhora a leitura de números em inglês e chinês. O processamento utiliza blocos num intervalo de 100–300 e um limite de tokens de áudio por bloco, pelo que estas definições não devem ser interpretadas como um comprimento máximo fixo para uma narração inteira. O condicionamento pelo bloco anterior pode transportar o contexto da voz para o segmento seguinte. Os controlos de amostragem, como temperature e top-p, influenciam a variação; mesmo uma fala orientada deliberadamente precisa de texto e contexto suficientes para transmitir o som pretendido.</p><p>Um pedido de produção útil distingue narração, diálogo e indicações de interpretação, indicando depois a voz e o formato do resultado. Ouça e verifique palavras em falta, áudio repetido, pronúncia de números, mudanças de interveniente e o momento de uma reação. Reveja a fala ou a referência de voz responsável pelo desajuste, em vez de assumir que mais etiquetas melhorarão todas as passagens. S2 Pro continua a ser um modelo S2 distinto de uma geração anterior; S2.1 Pro é a edição posterior, com as suas próprias melhorias e comportamento específico das definições.</p>",
  "aboutText": "S2 Pro é o modelo de segunda geração de conversão de texto em voz da Fish Audio para narração expressiva, diálogo de personagens e respostas de voz em conversação. Transforma um guião escrito em áudio e suporta indicações em linguagem natural ao nível da palavra ou da expressão. A geração anterior S1 utiliza indicações entre parênteses curvos, enquanto S2 Pro utiliza nativamente parênteses retos e suporta vários intervenientes num único pedido de síntese. O fabricante disponibiliza os pesos de S2 Pro e código de ajuste fino para trabalho de personalização separado; um pedido de voz normal utiliza o modelo selecionado em vez de treinar um novo.\n\nEscreva primeiro o conteúdo falado e coloque depois uma instrução de interpretação imediatamente antes da palavra ou expressão que deve afetar. As indicações podem descrever um sussurro, uma reação, uma pausa, uma mudança emocional ou um estilo de fala livre. Para uma explicação curta de produto, mantenha a frase factual clara e coloque ênfase apenas onde o ouvinte deve notar uma distinção. Para uma fala de personagem, descreva a mudança emocional no momento em que ocorre, em vez de atribuir um único estado de espírito fixo à passagem inteira.\n\nAs etiquetas entre parênteses retos são descrições de domínio aberto, em vez de um menu fechado. Os exemplos incluem [whispering], [sigh], [long pause] e uma expressão como [speaking slowly, almost hesitant]. As etiquetas podem surgir a meio de uma frase e afetam a fala que se segue. Uma etiqueta descritiva precisa de texto efetivo a seguir; uma instrução isolada pode produzir resultados imprevisíveis. Comece por uma ou duas indicações úteis antes de acrescentar camadas, pois etiquetas concorrentes podem dificultar a interpretação pretendida. Diferentes referências de voz podem responder à mesma indicação com intensidades diferentes.\n\nA versão S2 descreve aproximadamente 80 idiomas e apresenta exemplos de indicações de interpretação escritas no mesmo idioma do guião. Prepare o texto no idioma em que deve ser pronunciado e preserve nomes, unidades e abreviaturas que exijam uma leitura específica. Uma narração multilingue pode manter a voz pretendida ao mudar o idioma do guião, mas o resultado final continua a exigir escuta para verificar pronúncia e continuidade. A síntese produz o conteúdo fornecido em voz, em vez de decidir as informações que a aplicação deve transmitir.\n\nPara um só interveniente, escolha um identificador de voz guardado ou forneça áudio de referência e a transcrição correspondente. O produtor recomenda uma amostra limpa de 10–30 segundos para condicionamento instantâneo. Para diálogo, utilize marcadores de interveniente como <|speaker:0|> e <|speaker:1|>, com uma lista ordenada de identificadores de voz ou grupos de referência separados para os intervenientes. O marcador numérico seleciona a entrada de voz correspondente; mantenha a ordem fixa à medida que a conversa avança. As indicações de interpretação em linguagem natural e a seleção de intervenientes têm funções diferentes no guião.\n\nA saída de áudio pode ser MP3, WAV, PCM sem contentor ou Opus. MP3 tem a predefinição de 128 kbps e disponibiliza 64 ou 192 kbps; a saída Opus utiliza 48 kHz, enquanto WAV e PCM suportam as suas opções de taxa de amostragem documentadas em mono de 16 bits. Escolha o formato em função do destino efetivo: um ficheiro a guardar para narração ou blocos de áudio adequados para reprodução. O fluxo de voz do produtor descreve também transmissão de texto em direto quando o guião chega progressivamente. O resultado gerado deve manter-se associado ao guião completo e às vozes selecionadas.\n\nA velocidade pode ser ajustada entre 0.5 e 2.0, com controlos de volume e de normalização do nível sonoro da saída. A normalização do texto melhora a leitura de números em inglês e chinês. O processamento utiliza blocos num intervalo de 100–300 e um limite de tokens de áudio por bloco, pelo que estas definições não devem ser interpretadas como um comprimento máximo fixo para uma narração inteira. O condicionamento pelo bloco anterior pode transportar o contexto da voz para o segmento seguinte. Os controlos de amostragem, como temperature e top-p, influenciam a variação; mesmo uma fala orientada deliberadamente precisa de texto e contexto suficientes para transmitir o som pretendido.\n\nUm pedido de produção útil distingue narração, diálogo e indicações de interpretação, indicando depois a voz e o formato do resultado. Ouça e verifique palavras em falta, áudio repetido, pronúncia de números, mudanças de interveniente e o momento de uma reação. Reveja a fala ou a referência de voz responsável pelo desajuste, em vez de assumir que mais etiquetas melhorarão todas as passagens. S2 Pro continua a ser um modelo S2 distinto de uma geração anterior; S2.1 Pro é a edição posterior, com as suas próprias melhorias e comportamento específico das definições.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "77a599a015875e91989276b0be416a429040e94d73129aac1020a05c4ef17611",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "pt-pt",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">Fish Audio: S2 Pro</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Fechar\">×</button></div><div class=\"idline\"><span>Fish Audio /</span><code>fish-audio/s2-pro</code><button type=\"button\" id=\"copy-id\">Copiar ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Secções do cartão do modelo\"><button type=\"button\" data-card-jump=\"overview\">Introdução</button><button type=\"button\" data-card-jump=\"methods\">Entradas e métodos</button><button type=\"button\" data-card-jump=\"pricing\">Tarifários</button><button type=\"button\" data-card-jump=\"examples\">Exemplos</button><button type=\"button\" data-card-jump=\"results\">Resultados</button><button type=\"button\" data-card-jump=\"aliases\">Aliases</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Métodos da API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|speech|/v1/audio/speech|fish-audio%2Fs2-pro\">Síntese de voz</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">Introdução</h3><p class=\"mdesc-full\">Fish Audio S2 Pro cria voz multilingue expressiva com indicações ao nível da palavra e diálogo nativo com vários intervenientes. Instruções entre parênteses retos controlam a interpretação no guião, enquanto as referências de voz identificam os intervenientes e as definições de saída moldam o recurso de áudio.</p><dl class=\"card-io\" data-card-io><div><dt>Entradas aceites</dt><dd>Texto</dd></div><div><dt>Resultados</dt><dd>Áudio</dd></div></dl><details class=\"card-about\"><summary>Sobre o modelo</summary><p class=\"note-s\" data-model-method-boundary>Esta descrição apresenta as capacidades do modelo. As entradas, saídas e opções disponíveis no Ailoot para o método selecionado estão indicadas abaixo.</p><div class=\"mabout\" id=\"m-about\"><p>S2 Pro é o modelo de segunda geração de conversão de texto em voz da Fish Audio para narração expressiva, diálogo de personagens e respostas de voz em conversação. Transforma um guião escrito em áudio e suporta indicações em linguagem natural ao nível da palavra ou da expressão. A geração anterior S1 utiliza indicações entre parênteses curvos, enquanto S2 Pro utiliza nativamente parênteses retos e suporta vários intervenientes num único pedido de síntese. O fabricante disponibiliza os pesos de S2 Pro e código de ajuste fino para trabalho de personalização separado; um pedido de voz normal utiliza o modelo selecionado em vez de treinar um novo.</p><p>Escreva primeiro o conteúdo falado e coloque depois uma instrução de interpretação imediatamente antes da palavra ou expressão que deve afetar. As indicações podem descrever um sussurro, uma reação, uma pausa, uma mudança emocional ou um estilo de fala livre. Para uma explicação curta de produto, mantenha a frase factual clara e coloque ênfase apenas onde o ouvinte deve notar uma distinção. Para uma fala de personagem, descreva a mudança emocional no momento em que ocorre, em vez de atribuir um único estado de espírito fixo à passagem inteira.</p><p>As etiquetas entre parênteses retos são descrições de domínio aberto, em vez de um menu fechado. Os exemplos incluem [whispering], [sigh], [long pause] e uma expressão como [speaking slowly, almost hesitant]. As etiquetas podem surgir a meio de uma frase e afetam a fala que se segue. Uma etiqueta descritiva precisa de texto efetivo a seguir; uma instrução isolada pode produzir resultados imprevisíveis. Comece por uma ou duas indicações úteis antes de acrescentar camadas, pois etiquetas concorrentes podem dificultar a interpretação pretendida. Diferentes referências de voz podem responder à mesma indicação com intensidades diferentes.</p><p>A versão S2 descreve aproximadamente 80 idiomas e apresenta exemplos de indicações de interpretação escritas no mesmo idioma do guião. Prepare o texto no idioma em que deve ser pronunciado e preserve nomes, unidades e abreviaturas que exijam uma leitura específica. Uma narração multilingue pode manter a voz pretendida ao mudar o idioma do guião, mas o resultado final continua a exigir escuta para verificar pronúncia e continuidade. A síntese produz o conteúdo fornecido em voz, em vez de decidir as informações que a aplicação deve transmitir.</p><p>Para um só interveniente, escolha um identificador de voz guardado ou forneça áudio de referência e a transcrição correspondente. O produtor recomenda uma amostra limpa de 10–30 segundos para condicionamento instantâneo. Para diálogo, utilize marcadores de interveniente como &lt;|speaker:0|&gt; e &lt;|speaker:1|&gt;, com uma lista ordenada de identificadores de voz ou grupos de referência separados para os intervenientes. O marcador numérico seleciona a entrada de voz correspondente; mantenha a ordem fixa à medida que a conversa avança. As indicações de interpretação em linguagem natural e a seleção de intervenientes têm funções diferentes no guião.</p><p>A saída de áudio pode ser MP3, WAV, PCM sem contentor ou Opus. MP3 tem a predefinição de 128 kbps e disponibiliza 64 ou 192 kbps; a saída Opus utiliza 48 kHz, enquanto WAV e PCM suportam as suas opções de taxa de amostragem documentadas em mono de 16 bits. Escolha o formato em função do destino efetivo: um ficheiro a guardar para narração ou blocos de áudio adequados para reprodução. O fluxo de voz do produtor descreve também transmissão de texto em direto quando o guião chega progressivamente. O resultado gerado deve manter-se associado ao guião completo e às vozes selecionadas.</p><p>A velocidade pode ser ajustada entre 0.5 e 2.0, com controlos de volume e de normalização do nível sonoro da saída. A normalização do texto melhora a leitura de números em inglês e chinês. O processamento utiliza blocos num intervalo de 100–300 e um limite de tokens de áudio por bloco, pelo que estas definições não devem ser interpretadas como um comprimento máximo fixo para uma narração inteira. O condicionamento pelo bloco anterior pode transportar o contexto da voz para o segmento seguinte. Os controlos de amostragem, como temperature e top-p, influenciam a variação; mesmo uma fala orientada deliberadamente precisa de texto e contexto suficientes para transmitir o som pretendido.</p><p>Um pedido de produção útil distingue narração, diálogo e indicações de interpretação, indicando depois a voz e o formato do resultado. Ouça e verifique palavras em falta, áudio repetido, pronúncia de números, mudanças de interveniente e o momento de uma reação. Reveja a fala ou a referência de voz responsável pelo desajuste, em vez de assumir que mais etiquetas melhorarão todas as passagens. S2 Pro continua a ser um modelo S2 distinto de uma geração anterior; S2.1 Pro é a edição posterior, com as suas próprias melhorias e comportamento específico das definições.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Disponível no Ailoot · entradas e métodos</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Voz</b> <code>POST /v1/audio/speech</code></summary><dl class=\"method-capabilities\"><div><dt>Entrada</dt><dd><code>text</code></dd></div><div><dt>Saída</dt><dd><code>audio</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Campo</th><th>Tipo</th><th>Requisito</th><th>Valores e limites</th><th>Predefinição</th></tr></thead><tbody><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>string</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Obrigatório</td><td data-cell-label=\"Valores e limites\"><span class=\"card-cell-label\">Valores e limites</span><div>fish-audio/s2-pro</div></td><td data-cell-label=\"Predefinição\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinição</span>—</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">input</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>string</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Obrigatório</td><td data-cell-label=\"Valores e limites\"><span class=\"card-cell-label\">Valores e limites</span><div>Comprimento mínimo: 1</div></td><td data-cell-label=\"Predefinição\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinição</span>—</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">voice</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>string</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Obrigatório</td><td data-cell-label=\"Valores e limites\"><span class=\"card-cell-label\">Valores e limites</span><div>b347db033a6549378b48d00acb0d06cd</div><div>Comprimento mínimo: 1</div></td><td data-cell-label=\"Predefinição\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinição</span>—</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">response_format</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>string</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Opcional</td><td data-cell-label=\"Valores e limites\"><span class=\"card-cell-label\">Valores e limites</span><div>mp3, pcm</div></td><td data-cell-label=\"Predefinição\" data-default=\"known\"><span class=\"card-cell-label\">Predefinição</span>pcm</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">provider</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>object</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Opcional</td><td data-cell-label=\"Valores e limites\"><span class=\"card-cell-label\">Valores e limites</span></td><td data-cell-label=\"Predefinição\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinição</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>Parâmetros e ciclo de vida do método</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parâmetro</th><th>Contrato</th></tr></thead><tbody><tr><th data-cell-label=\"Parâmetro\" scope=\"row\"><span class=\"card-cell-label\">Parâmetro</span><code>content_type</code></th><td data-cell-label=\"Contrato\"><span class=\"card-cell-label\">Contrato</span>application/json</td></tr><tr><th data-cell-label=\"Parâmetro\" scope=\"row\"><span class=\"card-cell-label\">Parâmetro</span><code>required</code></th><td data-cell-label=\"Contrato\"><span class=\"card-cell-label\">Contrato</span>model, input, voice</td></tr><tr><th data-cell-label=\"Parâmetro\" scope=\"row\"><span class=\"card-cell-label\">Parâmetro</span><code>material_types</code></th><td data-cell-label=\"Contrato\"><span class=\"card-cell-label\">Contrato</span>text</td></tr></tbody></table></div><p>Ciclo de vida: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · task_id efetivamente devolvido ou registo na biblioteca de multimédia</p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}/content</code></p><p class=\"note-s\"><code>GET /v1/media/assets</code></p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Tarifários</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>As referências tarifárias não acrescentam opções ao pedido. Os parâmetros suportados constam do método selecionado.</p><dl data-price-conditions><dt>Modo rápido</dt><dd>Não especificado <span class=\"note-s\">Quando o modo rápido está selecionado</span></dd><dt>Modo flex</dt><dd>Não especificado <span class=\"note-s\">Quando o modo flex está selecionado</span></dd><dt>Esforço máximo de raciocínio</dt><dd>Não especificado <span class=\"note-s\">Quando o esforço máximo de raciocínio usa o ajuste predefinido (default)</span></dd></dl></div><div data-declared-tariff-pricing><h4>Tarifas Ailoot</h4><h4>Preços por configuração</h4><p class=\"note-s\">Associe cada custo às condições apresentadas. Use uma única tarifa para cada conjunto de configurações alternativas.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Configuração</th><th>Tabela de tarifas</th><th>Unidade de faturação</th><th>Custo</th></tr></thead><tbody><tr><th data-cell-label=\"Configuração\" scope=\"row\"><span class=\"card-cell-label\">Configuração</span>Tarifas base por token</th><td data-cell-label=\"Tabela de tarifas\"><span class=\"card-cell-label\">Tabela de tarifas</span>Tarifa base</td><td data-cell-label=\"Unidade de faturação\"><span class=\"card-cell-label\">Unidade de faturação</span>—</td><td data-cell-label=\"Custo\"><span class=\"card-cell-label\">Custo</span><div><span>Entrada · Tokens de entrada</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Saída · Tokens de saída</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Entrada · Leitura da cache</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Entrada · Escrita na cache</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Entrada · Escrita na cache, 1 hora</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div></td></tr><tr><th data-cell-label=\"Configuração\" scope=\"row\"><span class=\"card-cell-label\">Configuração</span>byte de entrada em UTF-8</th><td data-cell-label=\"Tabela de tarifas\"><span class=\"card-cell-label\">Tabela de tarifas</span>—</td><td data-cell-label=\"Unidade de faturação\"><span class=\"card-cell-label\">Unidade de faturação</span>por byte UTF-8 de entrada</td><td data-cell-label=\"Custo\"><span class=\"card-cell-label\">Custo</span><div><span>Entrada · byte de entrada em UTF-8</span> <b>$0.00003</b> <span class=\"price-unit\">por byte UTF-8 de entrada</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">O Ailoot reserva um montante estimado antes de um pedido. Após o resultado, liquida o custo final com base na utilização medida. No streaming, a liquidação usa o registo final de utilização. <a href=\"/docs/pt-pt/billing/reserve/\">Como funcionam a reserva e a liquidação →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Exemplos de pedidos</h3><h4>Ailoot Ultra · Voz</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Variantes de código\"><button class=\"cg-tab\" id=\"model-code-1355-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1355-panel-0\" aria-selected=\"true\" tabindex=\"0\">Use dados de entrada reais e guarde o resultado completo</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Copiar código\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1355-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1355-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_INPUT_TEXT:?Set the actual documented input value}&quot;\nexport AILOOT_INPUT_TEXT\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\nrequest={&#39;model&#39;: &#39;fish-audio/s2-pro&#39;, &#39;input&#39;: &#39;${ACTUAL_INPUT_TEXT}&#39;, &#39;voice&#39;: &#39;b347db033a6549378b48d00acb0d06cd&#39;, &#39;response_format&#39;: &#39;mp3&#39;}\nrequest[&#39;input&#39;]=os.environ[&#39;AILOOT_INPUT_TEXT&#39;]\nPath(&#39;request.json&#39;).write_text(json.dumps(request,ensure_ascii=False),encoding=&#39;utf-8&#39;)\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Receber e guardar os resultados</h3><h4>Ailoot Ultra · Voz</h4><p class=\"note-s\">Áudio binário completo ou resposta audio_url original, cabeçalhos e todos os recursos pertencentes ao utilizador.</p><ul class=\"card-result-paths\"><li><code>GET /v1/media/tasks/{task_id}</code></li><li><code>GET /v1/media/assets/{asset_id}/content</code></li><li><code>GET /v1/media/assets</code></li><li><code>GET /v1/media/assets/{asset_id}</code></li></ul><details class=\"card-about\"><summary>Outras leituras de conteúdo</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Variantes de código\"><button class=\"cg-tab\" id=\"model-code-1356-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1356-panel-0\" aria-selected=\"true\" tabindex=\"0\">Ler os recursos existentes de que é titular</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Copiar código\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1356-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1356-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o owned-assets.json\n# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.\n</code></pre></div></div></div></details><div class=\"card-result-process\" data-all-results><h5>Guardar todos os resultados concluídos</h5><p class=\"note-s\">Guarde cada resposta, ficheiro e parte de conteúdo devolvidos na íntegra.</p><p class=\"note-s\">Conserve a resposta completa e os cabeçalhos, todos os resultados efetivamente produzidos, os identificadores originais devolvidos e todos os campos de utilização. Recupere a operação original sem voltar a enviar o pedido de criação.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Se for necessário verificar a resposta original</h5><p class=\"note-s\">Guarde o X-Client-Request-ID devolvido para reconciliação. Consulte apenas os valores task_id/asset_id efetivamente devolvidos ou a sua biblioteca de multimédia; nunca construa um URL de tarefa a partir do ID da operação e nunca volte a enviar o pedido de criação.</p></div></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Aliases</h3><h4>Aliases do modelo</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=fish-audio%2Fs2-pro&amp;route=Ultra&amp;caller=fish-audio%2Fs2-pro&amp;fmt=speech\"><code>fish-audio/s2-pro</code></a></span></p><h4>Aliases dos caminhos dos métodos</h4><p class=\"note-s\">Use os caminhos dos métodos indicados acima.</p><h4>IDs de chamada relacionados</h4><p class=\"note-s\"><a href=\"#m=fish-audio%2Fs2-pro&amp;route=Ultra&amp;caller=fish-audio%2Fs2-pro&amp;fmt=speech\"><code>fish-audio/s2-pro</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "fish-audio/s2-pro",
        "fmt": "speech",
        "http": "POST",
        "path": "/v1/audio/speech",
        "request_model_id": "fish-audio/s2-pro",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|speech|/v1/audio/speech|fish-audio%2Fs2-pro",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Guarde o X-Client-Request-ID devolvido para reconciliação. Consulte apenas os valores task_id/asset_id efetivamente devolvidos ou a sua biblioteca de multimédia; nunca construa um URL de tarefa a partir do ID da operação e nunca volte a enviar o pedido de criação."
            },
            "outputs": {
              "all_results": "Conserve a resposta completa e os cabeçalhos, todos os resultados efetivamente produzidos, os identificadores originais devolvidos e todos os campos de utilização. Recupere a operação original sem voltar a enviar o pedido de criação.",
              "family": "audio",
              "formats": [
                "mp3",
                "pcm"
              ],
              "result": "Áudio binário completo ou resposta audio_url original, cabeçalhos e todos os recursos pertencentes ao utilizador."
            },
            "parameters": [
              {
                "enum": [
                  "fish-audio/s2-pro"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  "b347db033a6549378b48d00acb0d06cd"
                ],
                "enum_known": true,
                "min_length": 1,
                "name": "voice",
                "required": true,
                "type": "string"
              },
              {
                "default": "pcm",
                "default_known": true,
                "enum": [
                  "mp3",
                  "pcm"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              },
              {
                "name": "provider",
                "required": false,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "input": {
                  "minLength": 1,
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "fish-audio/s2-pro"
                  ],
                  "type": "string"
                },
                "provider": {
                  "description": "Documented speech data policy and provider-specific options.",
                  "properties": {
                    "data_collection": {
                      "enum": [
                        "allow",
                        "deny",
                        null
                      ],
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "options": {
                      "type": "object"
                    },
                    "zdr": {
                      "type": [
                        "boolean",
                        "null"
                      ]
                    }
                  },
                  "type": "object"
                },
                "response_format": {
                  "default": "pcm",
                  "enum": [
                    "mp3",
                    "pcm"
                  ],
                  "type": "string"
                },
                "voice": {
                  "enum": [
                    "b347db033a6549378b48d00acb0d06cd"
                  ],
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input",
                "voice"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input": "${ACTUAL_INPUT_TEXT}",
                "model": "fish-audio/s2-pro",
                "response_format": "mp3",
                "voice": "b347db033a6549378b48d00acb0d06cd"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "required": [
              "model",
              "input",
              "voice"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "task_id efetivamente devolvido ou registo na biblioteca de multimédia",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Keep the returned X-Client-Request-ID for reconciliation. Read only actual returned task_id/asset_id values or the owned media library; never build a task URL from the operation ID and never resubmit creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "audio",
            "formats": [
              "mp3",
              "pcm"
            ],
            "result": "Complete binary audio or original audio_url response, headers and every owned asset."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input UTF-8 byte"
            },
            "label": "input UTF-8 byte",
            "units": [
              {
                "amount": "0.00003",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_utf8_byte",
                "label": "input UTF-8 byte",
                "native_amount_usd_per_unit": "0.00003",
                "native_quantity": 1,
                "public_unit_label": "per input UTF-8 byte",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_utf8_byte"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_INPUT_TEXT:?Set the actual documented input value}\"\nexport AILOOT_INPUT_TEXT\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'fish-audio/s2-pro', 'input': '${ACTUAL_INPUT_TEXT}', 'voice': 'b347db033a6549378b48d00acb0d06cd', 'response_format': 'mp3'}\nrequest['input']=os.environ['AILOOT_INPUT_TEXT']\nPath('request.json').write_text(json.dumps(request,ensure_ascii=False),encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\n",
            "label": "Use actual input and retain the complete result",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o owned-assets.json\n# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.\n",
            "label": "Read existing owned assets",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "hints": [
          "Use the exact caller model ID and documented input representation.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Voz",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "audio_speech",
        "out": null,
        "output": [
          "audio"
        ],
        "path": "/v1/audio/speech",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "audio_input_utf8_byte": 3e-05
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input UTF-8 byte"
            },
            "label": "input UTF-8 byte",
            "units": [
              {
                "amount": "0.00003",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_utf8_byte",
                "label": "input UTF-8 byte",
                "native_amount_usd_per_unit": "0.00003",
                "native_quantity": 1,
                "public_unit_label": "per input UTF-8 byte",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_utf8_byte"
              }
            ]
          }
        ],
        "request_model_id": "fish-audio/s2-pro",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.00003",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_utf8_byte",
            "label": "input UTF-8 byte",
            "native_amount_usd_per_unit": "0.00003",
            "native_quantity": 1,
            "public_unit_label": "per input UTF-8 byte",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_utf8_byte"
          }
        ]
      }
    }
  ],
  "model_id": "fish-audio/s2-pro",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "6e142fada370843b897f18bef9da8811e5244d8f202f673d0cc7a6524d2bd91b",
    "input_html_sha256": "e7e4c88a651a7fa0b064ebd6c618cb53f423a17cb8baee628fce286c9501943d",
    "private_audit_sha256": "a48856d9d40ba57163ee263c9885f655d12e1c3ae91e74f76907a778c101de93",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/pt-pt/fish-audio-s2-pro/",
    "description": "Fish Audio S2 Pro cria voz multilingue expressiva com indicações ao nível da palavra e diálogo nativo com vários intervenientes. Instruções entre parênteses retos controlam a interpretação no guião, enquanto as referências de voz identificam os intervenientes e as definições de saída moldam o recurso de áudio.",
    "locale": "pt-pt",
    "md_url": "https://ailoot.ai/models/pt-pt/fish-audio-s2-pro/index.md",
    "title": "Fish Audio: S2 Pro — Ailoot",
    "url": "https://ailoot.ai/models/pt-pt/fish-audio-s2-pro/"
  },
  "rawModel": {
    "about": "S2 Pro é o modelo de segunda geração de conversão de texto em voz da Fish Audio para narração expressiva, diálogo de personagens e respostas de voz em conversação. Transforma um guião escrito em áudio e suporta indicações em linguagem natural ao nível da palavra ou da expressão. A geração anterior S1 utiliza indicações entre parênteses curvos, enquanto S2 Pro utiliza nativamente parênteses retos e suporta vários intervenientes num único pedido de síntese. O fabricante disponibiliza os pesos de S2 Pro e código de ajuste fino para trabalho de personalização separado; um pedido de voz normal utiliza o modelo selecionado em vez de treinar um novo.\n\nEscreva primeiro o conteúdo falado e coloque depois uma instrução de interpretação imediatamente antes da palavra ou expressão que deve afetar. As indicações podem descrever um sussurro, uma reação, uma pausa, uma mudança emocional ou um estilo de fala livre. Para uma explicação curta de produto, mantenha a frase factual clara e coloque ênfase apenas onde o ouvinte deve notar uma distinção. Para uma fala de personagem, descreva a mudança emocional no momento em que ocorre, em vez de atribuir um único estado de espírito fixo à passagem inteira.\n\nAs etiquetas entre parênteses retos são descrições de domínio aberto, em vez de um menu fechado. Os exemplos incluem [whispering], [sigh], [long pause] e uma expressão como [speaking slowly, almost hesitant]. As etiquetas podem surgir a meio de uma frase e afetam a fala que se segue. Uma etiqueta descritiva precisa de texto efetivo a seguir; uma instrução isolada pode produzir resultados imprevisíveis. Comece por uma ou duas indicações úteis antes de acrescentar camadas, pois etiquetas concorrentes podem dificultar a interpretação pretendida. Diferentes referências de voz podem responder à mesma indicação com intensidades diferentes.\n\nA versão S2 descreve aproximadamente 80 idiomas e apresenta exemplos de indicações de interpretação escritas no mesmo idioma do guião. Prepare o texto no idioma em que deve ser pronunciado e preserve nomes, unidades e abreviaturas que exijam uma leitura específica. Uma narração multilingue pode manter a voz pretendida ao mudar o idioma do guião, mas o resultado final continua a exigir escuta para verificar pronúncia e continuidade. A síntese produz o conteúdo fornecido em voz, em vez de decidir as informações que a aplicação deve transmitir.\n\nPara um só interveniente, escolha um identificador de voz guardado ou forneça áudio de referência e a transcrição correspondente. O produtor recomenda uma amostra limpa de 10–30 segundos para condicionamento instantâneo. Para diálogo, utilize marcadores de interveniente como <|speaker:0|> e <|speaker:1|>, com uma lista ordenada de identificadores de voz ou grupos de referência separados para os intervenientes. O marcador numérico seleciona a entrada de voz correspondente; mantenha a ordem fixa à medida que a conversa avança. As indicações de interpretação em linguagem natural e a seleção de intervenientes têm funções diferentes no guião.\n\nA saída de áudio pode ser MP3, WAV, PCM sem contentor ou Opus. MP3 tem a predefinição de 128 kbps e disponibiliza 64 ou 192 kbps; a saída Opus utiliza 48 kHz, enquanto WAV e PCM suportam as suas opções de taxa de amostragem documentadas em mono de 16 bits. Escolha o formato em função do destino efetivo: um ficheiro a guardar para narração ou blocos de áudio adequados para reprodução. O fluxo de voz do produtor descreve também transmissão de texto em direto quando o guião chega progressivamente. O resultado gerado deve manter-se associado ao guião completo e às vozes selecionadas.\n\nA velocidade pode ser ajustada entre 0.5 e 2.0, com controlos de volume e de normalização do nível sonoro da saída. A normalização do texto melhora a leitura de números em inglês e chinês. O processamento utiliza blocos num intervalo de 100–300 e um limite de tokens de áudio por bloco, pelo que estas definições não devem ser interpretadas como um comprimento máximo fixo para uma narração inteira. O condicionamento pelo bloco anterior pode transportar o contexto da voz para o segmento seguinte. Os controlos de amostragem, como temperature e top-p, influenciam a variação; mesmo uma fala orientada deliberadamente precisa de texto e contexto suficientes para transmitir o som pretendido.\n\nUm pedido de produção útil distingue narração, diálogo e indicações de interpretação, indicando depois a voz e o formato do resultado. Ouça e verifique palavras em falta, áudio repetido, pronúncia de números, mudanças de interveniente e o momento de uma reação. Reveja a fala ou a referência de voz responsável pelo desajuste, em vez de assumir que mais etiquetas melhorarão todas as passagens. S2 Pro continua a ser um modelo S2 distinto de uma geração anterior; S2.1 Pro é a edição posterior, com as suas próprias melhorias e comportamento específico das definições.",
    "alias_of": null,
    "aliases": [],
    "author": "Fish Audio",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "speech"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.00003",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_utf8_byte",
            "label": "input UTF-8 byte",
            "native_amount_usd_per_unit": "0.00003",
            "native_quantity": 1,
            "public_unit_label": "per input UTF-8 byte",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_utf8_byte"
          }
        ],
        "summary": "Todas as tarifas da configuração constam dos detalhes."
      }
    ],
    "ctx": null,
    "formats": [
      "speech"
    ],
    "id": "fish-audio/s2-pro",
    "input": [
      "text"
    ],
    "kind": "audio",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Guarde o X-Client-Request-ID devolvido para reconciliação. Consulte apenas os valores task_id/asset_id efetivamente devolvidos ou a sua biblioteca de multimédia; nunca construa um URL de tarefa a partir do ID da operação e nunca volte a enviar o pedido de criação."
            },
            "outputs": {
              "all_results": "Conserve a resposta completa e os cabeçalhos, todos os resultados efetivamente produzidos, os identificadores originais devolvidos e todos os campos de utilização. Recupere a operação original sem voltar a enviar o pedido de criação.",
              "family": "audio",
              "formats": [
                "mp3",
                "pcm"
              ],
              "result": "Áudio binário completo ou resposta audio_url original, cabeçalhos e todos os recursos pertencentes ao utilizador."
            },
            "parameters": [
              {
                "enum": [
                  "fish-audio/s2-pro"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  "b347db033a6549378b48d00acb0d06cd"
                ],
                "enum_known": true,
                "min_length": 1,
                "name": "voice",
                "required": true,
                "type": "string"
              },
              {
                "default": "pcm",
                "default_known": true,
                "enum": [
                  "mp3",
                  "pcm"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              },
              {
                "name": "provider",
                "required": false,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "input": {
                  "minLength": 1,
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "fish-audio/s2-pro"
                  ],
                  "type": "string"
                },
                "provider": {
                  "description": "Documented speech data policy and provider-specific options.",
                  "properties": {
                    "data_collection": {
                      "enum": [
                        "allow",
                        "deny",
                        null
                      ],
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "options": {
                      "type": "object"
                    },
                    "zdr": {
                      "type": [
                        "boolean",
                        "null"
                      ]
                    }
                  },
                  "type": "object"
                },
                "response_format": {
                  "default": "pcm",
                  "enum": [
                    "mp3",
                    "pcm"
                  ],
                  "type": "string"
                },
                "voice": {
                  "enum": [
                    "b347db033a6549378b48d00acb0d06cd"
                  ],
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input",
                "voice"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input": "${ACTUAL_INPUT_TEXT}",
                "model": "fish-audio/s2-pro",
                "response_format": "mp3",
                "voice": "b347db033a6549378b48d00acb0d06cd"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "required": [
              "model",
              "input",
              "voice"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "task_id efetivamente devolvido ou registo na biblioteca de multimédia",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Keep the returned X-Client-Request-ID for reconciliation. Read only actual returned task_id/asset_id values or the owned media library; never build a task URL from the operation ID and never resubmit creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "audio",
            "formats": [
              "mp3",
              "pcm"
            ],
            "result": "Complete binary audio or original audio_url response, headers and every owned asset."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input UTF-8 byte"
            },
            "label": "input UTF-8 byte",
            "units": [
              {
                "amount": "0.00003",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_utf8_byte",
                "label": "input UTF-8 byte",
                "native_amount_usd_per_unit": "0.00003",
                "native_quantity": 1,
                "public_unit_label": "per input UTF-8 byte",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_utf8_byte"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_INPUT_TEXT:?Set the actual documented input value}\"\nexport AILOOT_INPUT_TEXT\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'fish-audio/s2-pro', 'input': '${ACTUAL_INPUT_TEXT}', 'voice': 'b347db033a6549378b48d00acb0d06cd', 'response_format': 'mp3'}\nrequest['input']=os.environ['AILOOT_INPUT_TEXT']\nPath('request.json').write_text(json.dumps(request,ensure_ascii=False),encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\n",
            "label": "Use actual input and retain the complete result",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o owned-assets.json\n# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.\n",
            "label": "Read existing owned assets",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "hints": [
          "Use the exact caller model ID and documented input representation.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Voz",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "audio_speech",
        "out": null,
        "output": [
          "audio"
        ],
        "path": "/v1/audio/speech",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "audio_input_utf8_byte": 3e-05
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input UTF-8 byte"
            },
            "label": "input UTF-8 byte",
            "units": [
              {
                "amount": "0.00003",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_utf8_byte",
                "label": "input UTF-8 byte",
                "native_amount_usd_per_unit": "0.00003",
                "native_quantity": 1,
                "public_unit_label": "per input UTF-8 byte",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_utf8_byte"
              }
            ]
          }
        ],
        "request_model_id": "fish-audio/s2-pro",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.00003",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_utf8_byte",
            "label": "input UTF-8 byte",
            "native_amount_usd_per_unit": "0.00003",
            "native_quantity": 1,
            "public_unit_label": "per input UTF-8 byte",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_utf8_byte"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "fish-audio/s2-pro",
        "request_model_id": "fish-audio/s2-pro",
        "route_label": "Ultra"
      }
    ],
    "name": "Fish Audio: S2 Pro",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "short": "Fish Audio S2 Pro cria voz multilingue expressiva com indicações ao nível da palavra e diálogo nativo com vários intervenientes. Instruções entre parênteses retos controlam a interpretação no guião, enquanto as referências de voz identificam os intervenientes e as definições de saída moldam o recurso de áudio."
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "Fish Audio S2 Pro cria voz multilingue expressiva com indicações ao nível da palavra e diálogo nativo com vários intervenientes. Instruções entre parênteses retos controlam a interpretação no guião, enquanto as referências de voz identificam os intervenientes e as definições de saída moldam o recurso de áudio.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "4551b74dc4d4a55d170da5c7cf973b0c8fc0c0bad3df84a80612f0d54784196c",
    "renderer_sha256": "8caea4544177cc2b7d2cb3356b5f07bfd3660386d75f2714a6f603fa5e2a6cd2"
  },
  "sourceRevision": "8f57646e0c1da0a4da84fdf30ebab391a5063da98240a13a750c685dd972a732"
}
