{
  "aboutHtml": "<p>Google Chirp 3 es un modelo multilingüe de reconocimiento automático del habla que convierte audio hablado en texto. Google lo documenta como el modelo de transcripción Chirp 3 de su familia Speech-to-Text V2, con el identificador de modelo chirp_3. Su finalidad es reconocer habla grabada o transmitida en tiempo real, con detección de idioma y funciones específicas de transcripción. El recurso resultante es una transcripción y los metadatos admitidos por el método de reconocimiento seleccionado, en lugar de voz generada o una respuesta abierta de asistente.</p><p>El fabricante distingue el reconocimiento en tiempo real, el reconocimiento síncrono para fragmentos cortos y el reconocimiento por lotes para grabaciones más largas. Elige el modo según el audio de origen y el resultado requerido. Para una nota de voz breve, una respuesta textual completa puede ser suficiente. Para una entrevista o una llamada grabada, un resultado por lotes con información de hablantes puede ser más útil. Para subtítulos en directo o una interfaz de órdenes habladas, distingue el texto intermedio del resultado final del reconocimiento y conserva el intervalo de audio que describe.</p><p>Prepara el audio con la codificación que espera la implementación de reconocimiento. Los ejemplos de Chirp 3 de Google utilizan detección automática de la decodificación para archivos grabados y decodificación explícita para una configuración de transmisión de audio en bruto. La referencia asociada del decodificador V2 incluye WAV PCM o audio con compansión, FLAC, MP3, Opus en Ogg/WebM y AAC en contenedores MP4, M4A o MOV, entre sus codificaciones admitidas. El nombre de un contenedor no sustituye al códec real ni a la configuración de muestreo. Conserva el habla clara y evita una saturación grave de la señal o conversiones innecesarias que pierdan detalles audibles.</p><p>Chirp 3 puede identificar y transcribir automáticamente el idioma dominante, y un conjunto de variantes regionales esperadas puede acotar sus opciones de reconocimiento. La disponibilidad de idiomas varía según el método y la función. La lista de idiomas de transcripción es más amplia que la de diarización, por lo que reconocer un idioma no demuestra que todas las funciones de hablantes o marcas temporales sean aplicables a él. Utiliza la variante regional que corresponda a la grabación y conserva para su revisión los nombres que aparezcan al alternar idiomas o los términos especializados. Una etiqueta de idioma detectado forma parte del resultado, no es prueba de que todas las palabras poco habituales se hayan reconocido correctamente.</p><p>La diarización de hablantes agrupa el habla por voz en una grabación de un solo canal. Google proporciona un ejemplo de transcripción por lotes con información del hablante en cada palabra. Para una entrevista, conserva esas etiquetas junto con el texto reconocido y compara los cambios de hablante con la grabación antes de asignar nombres o funciones reales. Las voces parecidas, las interrupciones y el habla superpuesta pueden dificultar la atribución. Deja claras la disposición de canales de la fuente y la tarea prevista de revisión de hablantes, en lugar de tratar una etiqueta como una identidad verificada de forma independiente.</p><p>Las marcas temporales también dependen del método. El reconocimiento en tiempo real proporciona marcas temporales a nivel de enunciado, mientras que las indicaciones del fabricante para el reconocimiento de archivos describen marcas de tiempo opcionales por palabra, con una posible pérdida de calidad de la transcripción. Conserva los metadatos realmente devueltos por el método elegido y revisa la alineación junto con la redacción. Un flujo de subtitulado necesita ambas cosas: texto reconocido legible y pruebas de que un límite temporal corresponde al sonido correcto. Google también advierte de que el valor de confianza devuelto por palabra no es una puntuación de confianza real, por lo que no debe utilizarse para certificar que una palabra sea correcta.</p><p>La adaptación del habla proporciona frases y nombres propios que probablemente aparezcan en la grabación. El fabricante documenta un diccionario de hasta 1,000 frases y recomienda utilizar el menor número posible de entradas pertinentes para evitar degradar el reconocimiento de otros términos. Para una presentación técnica, prepara una lista breve de nombres reales de productos y abreviaturas, y después inspecciónalos en la transcripción. La ponderación ayuda al reconocimiento a considerar un término; no demuestra que se haya pronunciado ni sustituye a una comprobación con el audio.</p><p>El modelo proporciona puntuación automática y uso automático de mayúsculas, que la interfaz documentada permite desactivar. Google también describe una función en versión preliminar para instrucciones personalizadas sobre el formato de transcripción, como la forma de escribir un nombre o una fecha concretos. Mantén esas instrucciones centradas en dar formato al habla reconocida. Una transcripción que normaliza una fecha o escribe una marca con mayúsculas sigue teniendo que conservar el significado de lo pronunciado. Un resumen, una traducción o un análisis factual son usos posteriores de la transcripción, no algo establecido por el propio resultado del reconocimiento.</p><p>El reductor de ruido integrado está pensado para disminuir la música de fondo y los sonidos del entorno, como la lluvia o el ruido de la calle. Google afirma expresamente que no puede eliminar voces humanas de fondo. Mantén esa distinción al preparar una grabación con conversaciones superpuestas. Contrasta con la fuente tanto las secciones ruidosas como las silenciosas en lugar de suponer que una transcripción aparentemente más limpia demuestra que se ha eliminado el sonido interferente. Un resultado útil mantiene identificables los pasajes inciertos para poder corregirlos.</p><p>Para tareas de reconocimiento en tiempo real, la sensibilidad de detección del final de enunciado cambia el momento en que un enunciado se considera terminado. El fabricante describe los ajustes standard, short y supershort para habla prevista cada vez más breve. Un ajuste más rápido puede cortar a un hablante que hace una pausa a mitad de una idea. Adapta el ajuste al dictado natural, a una frase corta o a una orden muy breve, y conserva el estado de resultado final junto con la transcripción. Para un archivo terminado, revisa los nombres, las cantidades, las negaciones y los límites entre hablantes, y conserva después el modo elegido y el audio de origen para que el resultado pueda comprobarse o reutilizarse.</p>",
  "aboutText": "Google Chirp 3 es un modelo multilingüe de reconocimiento automático del habla que convierte audio hablado en texto. Google lo documenta como el modelo de transcripción Chirp 3 de su familia Speech-to-Text V2, con el identificador de modelo chirp_3. Su finalidad es reconocer habla grabada o transmitida en tiempo real, con detección de idioma y funciones específicas de transcripción. El recurso resultante es una transcripción y los metadatos admitidos por el método de reconocimiento seleccionado, en lugar de voz generada o una respuesta abierta de asistente.\n\nEl fabricante distingue el reconocimiento en tiempo real, el reconocimiento síncrono para fragmentos cortos y el reconocimiento por lotes para grabaciones más largas. Elige el modo según el audio de origen y el resultado requerido. Para una nota de voz breve, una respuesta textual completa puede ser suficiente. Para una entrevista o una llamada grabada, un resultado por lotes con información de hablantes puede ser más útil. Para subtítulos en directo o una interfaz de órdenes habladas, distingue el texto intermedio del resultado final del reconocimiento y conserva el intervalo de audio que describe.\n\nPrepara el audio con la codificación que espera la implementación de reconocimiento. Los ejemplos de Chirp 3 de Google utilizan detección automática de la decodificación para archivos grabados y decodificación explícita para una configuración de transmisión de audio en bruto. La referencia asociada del decodificador V2 incluye WAV PCM o audio con compansión, FLAC, MP3, Opus en Ogg/WebM y AAC en contenedores MP4, M4A o MOV, entre sus codificaciones admitidas. El nombre de un contenedor no sustituye al códec real ni a la configuración de muestreo. Conserva el habla clara y evita una saturación grave de la señal o conversiones innecesarias que pierdan detalles audibles.\n\nChirp 3 puede identificar y transcribir automáticamente el idioma dominante, y un conjunto de variantes regionales esperadas puede acotar sus opciones de reconocimiento. La disponibilidad de idiomas varía según el método y la función. La lista de idiomas de transcripción es más amplia que la de diarización, por lo que reconocer un idioma no demuestra que todas las funciones de hablantes o marcas temporales sean aplicables a él. Utiliza la variante regional que corresponda a la grabación y conserva para su revisión los nombres que aparezcan al alternar idiomas o los términos especializados. Una etiqueta de idioma detectado forma parte del resultado, no es prueba de que todas las palabras poco habituales se hayan reconocido correctamente.\n\nLa diarización de hablantes agrupa el habla por voz en una grabación de un solo canal. Google proporciona un ejemplo de transcripción por lotes con información del hablante en cada palabra. Para una entrevista, conserva esas etiquetas junto con el texto reconocido y compara los cambios de hablante con la grabación antes de asignar nombres o funciones reales. Las voces parecidas, las interrupciones y el habla superpuesta pueden dificultar la atribución. Deja claras la disposición de canales de la fuente y la tarea prevista de revisión de hablantes, en lugar de tratar una etiqueta como una identidad verificada de forma independiente.\n\nLas marcas temporales también dependen del método. El reconocimiento en tiempo real proporciona marcas temporales a nivel de enunciado, mientras que las indicaciones del fabricante para el reconocimiento de archivos describen marcas de tiempo opcionales por palabra, con una posible pérdida de calidad de la transcripción. Conserva los metadatos realmente devueltos por el método elegido y revisa la alineación junto con la redacción. Un flujo de subtitulado necesita ambas cosas: texto reconocido legible y pruebas de que un límite temporal corresponde al sonido correcto. Google también advierte de que el valor de confianza devuelto por palabra no es una puntuación de confianza real, por lo que no debe utilizarse para certificar que una palabra sea correcta.\n\nLa adaptación del habla proporciona frases y nombres propios que probablemente aparezcan en la grabación. El fabricante documenta un diccionario de hasta 1,000 frases y recomienda utilizar el menor número posible de entradas pertinentes para evitar degradar el reconocimiento de otros términos. Para una presentación técnica, prepara una lista breve de nombres reales de productos y abreviaturas, y después inspecciónalos en la transcripción. La ponderación ayuda al reconocimiento a considerar un término; no demuestra que se haya pronunciado ni sustituye a una comprobación con el audio.\n\nEl modelo proporciona puntuación automática y uso automático de mayúsculas, que la interfaz documentada permite desactivar. Google también describe una función en versión preliminar para instrucciones personalizadas sobre el formato de transcripción, como la forma de escribir un nombre o una fecha concretos. Mantén esas instrucciones centradas en dar formato al habla reconocida. Una transcripción que normaliza una fecha o escribe una marca con mayúsculas sigue teniendo que conservar el significado de lo pronunciado. Un resumen, una traducción o un análisis factual son usos posteriores de la transcripción, no algo establecido por el propio resultado del reconocimiento.\n\nEl reductor de ruido integrado está pensado para disminuir la música de fondo y los sonidos del entorno, como la lluvia o el ruido de la calle. Google afirma expresamente que no puede eliminar voces humanas de fondo. Mantén esa distinción al preparar una grabación con conversaciones superpuestas. Contrasta con la fuente tanto las secciones ruidosas como las silenciosas en lugar de suponer que una transcripción aparentemente más limpia demuestra que se ha eliminado el sonido interferente. Un resultado útil mantiene identificables los pasajes inciertos para poder corregirlos.\n\nPara tareas de reconocimiento en tiempo real, la sensibilidad de detección del final de enunciado cambia el momento en que un enunciado se considera terminado. El fabricante describe los ajustes standard, short y supershort para habla prevista cada vez más breve. Un ajuste más rápido puede cortar a un hablante que hace una pausa a mitad de una idea. Adapta el ajuste al dictado natural, a una frase corta o a una orden muy breve, y conserva el estado de resultado final junto con la transcripción. Para un archivo terminado, revisa los nombres, las cantidades, las negaciones y los límites entre hablantes, y conserva después el modo elegido y el audio de origen para que el resultado pueda comprobarse o reutilizarse.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "92e7dd04fa470fb61d08874cfa1b2bb285e6305a9c90549fd3af618f2b790435",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "es",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">G</span><h2 id=\"sheet-title\">Google: Chirp 3</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Cerrar\">×</button></div><div class=\"idline\"><span>Google /</span><code>google/chirp-3</code><button type=\"button\" id=\"copy-id\">Copiar ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Secciones de la ficha del modelo\"><button type=\"button\" data-card-jump=\"overview\">Primeros pasos</button><button type=\"button\" data-card-jump=\"methods\">Entradas y métodos</button><button type=\"button\" data-card-jump=\"pricing\">Planes</button><button type=\"button\" data-card-jump=\"examples\">Ejemplos</button><button type=\"button\" data-card-jump=\"results\">Resultados</button><button type=\"button\" data-card-jump=\"aliases\">Alias</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Métodos de 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|transcriptions|/v1/audio/transcriptions|google%2Fchirp-3\">Transcripción</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\">Primeros pasos</h3><p class=\"mdesc-full\">Google Chirp 3 es un modelo multilingüe de reconocimiento del habla para audio en tiempo real, grabaciones breves y transcripciones por lotes de mayor duración. Ofrece detección automática del idioma, puntuación, adaptación de vocabulario y metadatos temporales o de hablantes según el modo. Su reductor de ruido disminuye el ruido de fondo, pero no puede eliminar otras voces.</p><dl class=\"card-io\" data-card-io><div><dt>Entradas aceptadas</dt><dd>Audio</dd></div><div><dt>Resultados</dt><dd>Texto</dd></div></dl><details class=\"card-about\"><summary>Sobre el modelo</summary><p class=\"note-s\" data-model-method-boundary>Esta descripción cubre las capacidades del modelo. Las entradas, salidas y opciones disponibles en Ailoot se indican a continuación para el método seleccionado.</p><div class=\"mabout\" id=\"m-about\"><p>Google Chirp 3 es un modelo multilingüe de reconocimiento automático del habla que convierte audio hablado en texto. Google lo documenta como el modelo de transcripción Chirp 3 de su familia Speech-to-Text V2, con el identificador de modelo chirp_3. Su finalidad es reconocer habla grabada o transmitida en tiempo real, con detección de idioma y funciones específicas de transcripción. El recurso resultante es una transcripción y los metadatos admitidos por el método de reconocimiento seleccionado, en lugar de voz generada o una respuesta abierta de asistente.</p><p>El fabricante distingue el reconocimiento en tiempo real, el reconocimiento síncrono para fragmentos cortos y el reconocimiento por lotes para grabaciones más largas. Elige el modo según el audio de origen y el resultado requerido. Para una nota de voz breve, una respuesta textual completa puede ser suficiente. Para una entrevista o una llamada grabada, un resultado por lotes con información de hablantes puede ser más útil. Para subtítulos en directo o una interfaz de órdenes habladas, distingue el texto intermedio del resultado final del reconocimiento y conserva el intervalo de audio que describe.</p><p>Prepara el audio con la codificación que espera la implementación de reconocimiento. Los ejemplos de Chirp 3 de Google utilizan detección automática de la decodificación para archivos grabados y decodificación explícita para una configuración de transmisión de audio en bruto. La referencia asociada del decodificador V2 incluye WAV PCM o audio con compansión, FLAC, MP3, Opus en Ogg/WebM y AAC en contenedores MP4, M4A o MOV, entre sus codificaciones admitidas. El nombre de un contenedor no sustituye al códec real ni a la configuración de muestreo. Conserva el habla clara y evita una saturación grave de la señal o conversiones innecesarias que pierdan detalles audibles.</p><p>Chirp 3 puede identificar y transcribir automáticamente el idioma dominante, y un conjunto de variantes regionales esperadas puede acotar sus opciones de reconocimiento. La disponibilidad de idiomas varía según el método y la función. La lista de idiomas de transcripción es más amplia que la de diarización, por lo que reconocer un idioma no demuestra que todas las funciones de hablantes o marcas temporales sean aplicables a él. Utiliza la variante regional que corresponda a la grabación y conserva para su revisión los nombres que aparezcan al alternar idiomas o los términos especializados. Una etiqueta de idioma detectado forma parte del resultado, no es prueba de que todas las palabras poco habituales se hayan reconocido correctamente.</p><p>La diarización de hablantes agrupa el habla por voz en una grabación de un solo canal. Google proporciona un ejemplo de transcripción por lotes con información del hablante en cada palabra. Para una entrevista, conserva esas etiquetas junto con el texto reconocido y compara los cambios de hablante con la grabación antes de asignar nombres o funciones reales. Las voces parecidas, las interrupciones y el habla superpuesta pueden dificultar la atribución. Deja claras la disposición de canales de la fuente y la tarea prevista de revisión de hablantes, en lugar de tratar una etiqueta como una identidad verificada de forma independiente.</p><p>Las marcas temporales también dependen del método. El reconocimiento en tiempo real proporciona marcas temporales a nivel de enunciado, mientras que las indicaciones del fabricante para el reconocimiento de archivos describen marcas de tiempo opcionales por palabra, con una posible pérdida de calidad de la transcripción. Conserva los metadatos realmente devueltos por el método elegido y revisa la alineación junto con la redacción. Un flujo de subtitulado necesita ambas cosas: texto reconocido legible y pruebas de que un límite temporal corresponde al sonido correcto. Google también advierte de que el valor de confianza devuelto por palabra no es una puntuación de confianza real, por lo que no debe utilizarse para certificar que una palabra sea correcta.</p><p>La adaptación del habla proporciona frases y nombres propios que probablemente aparezcan en la grabación. El fabricante documenta un diccionario de hasta 1,000 frases y recomienda utilizar el menor número posible de entradas pertinentes para evitar degradar el reconocimiento de otros términos. Para una presentación técnica, prepara una lista breve de nombres reales de productos y abreviaturas, y después inspecciónalos en la transcripción. La ponderación ayuda al reconocimiento a considerar un término; no demuestra que se haya pronunciado ni sustituye a una comprobación con el audio.</p><p>El modelo proporciona puntuación automática y uso automático de mayúsculas, que la interfaz documentada permite desactivar. Google también describe una función en versión preliminar para instrucciones personalizadas sobre el formato de transcripción, como la forma de escribir un nombre o una fecha concretos. Mantén esas instrucciones centradas en dar formato al habla reconocida. Una transcripción que normaliza una fecha o escribe una marca con mayúsculas sigue teniendo que conservar el significado de lo pronunciado. Un resumen, una traducción o un análisis factual son usos posteriores de la transcripción, no algo establecido por el propio resultado del reconocimiento.</p><p>El reductor de ruido integrado está pensado para disminuir la música de fondo y los sonidos del entorno, como la lluvia o el ruido de la calle. Google afirma expresamente que no puede eliminar voces humanas de fondo. Mantén esa distinción al preparar una grabación con conversaciones superpuestas. Contrasta con la fuente tanto las secciones ruidosas como las silenciosas en lugar de suponer que una transcripción aparentemente más limpia demuestra que se ha eliminado el sonido interferente. Un resultado útil mantiene identificables los pasajes inciertos para poder corregirlos.</p><p>Para tareas de reconocimiento en tiempo real, la sensibilidad de detección del final de enunciado cambia el momento en que un enunciado se considera terminado. El fabricante describe los ajustes standard, short y supershort para habla prevista cada vez más breve. Un ajuste más rápido puede cortar a un hablante que hace una pausa a mitad de una idea. Adapta el ajuste al dictado natural, a una frase corta o a una orden muy breve, y conserva el estado de resultado final junto con la transcripción. Para un archivo terminado, revisa los nombres, las cantidades, las negaciones y los límites entre hablantes, y conserva después el modo elegido y el audio de origen para que el resultado pueda comprobarse o reutilizarse.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Disponible en Ailoot · entradas y métodos</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Transcripción</b> <code>POST /v1/audio/transcriptions</code></summary><dl class=\"method-capabilities\"><div><dt>Tipos de entrada</dt><dd><code>audio</code></dd></div><div><dt>Tipos de salida</dt><dd><code>text</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 y límites</th><th>Predeterminado</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>Obligatorio</td><td data-cell-label=\"Valores y límites\"><span class=\"card-cell-label\">Valores y límites</span><div>google/chirp-3</div></td><td data-cell-label=\"Predeterminado\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predeterminado</span>—</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">input_audio</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>Obligatorio</td><td data-cell-label=\"Valores y límites\"><span class=\"card-cell-label\">Valores y límites</span></td><td data-cell-label=\"Predeterminado\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predeterminado</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>Parámetros del método y ciclo de vida</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_audio</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>audio</td></tr><tr><th data-cell-label=\"Parámetro\" scope=\"row\"><span class=\"card-cell-label\">Parámetro</span><code>material_conditions</code></th><td data-cell-label=\"Contrato\"><span class=\"card-cell-label\">Contrato</span>El ejemplo lee tu archivo PCM WAV real y no vacío, codifica todos los bytes del archivo en base64 y envía input_audio.format con el valor wav.</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 exacto de un registro existente de medios bajo tu titularidad</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\">Planes</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Las referencias tarifarias no añaden opciones a la solicitud. Los parámetros admitidos se indican en el método seleccionado.</p><dl data-price-conditions><dt>Modo rápido</dt><dd>Sin especificar <span class=\"note-s\">Cuando se selecciona el modo rápido</span></dd><dt>Modo flex</dt><dd>Sin especificar <span class=\"note-s\">Cuando se selecciona el modo flex</span></dd><dt>Esfuerzo máximo de razonamiento</dt><dd>Sin especificar <span class=\"note-s\">Cuando el esfuerzo máximo de razonamiento utiliza el ajuste predeterminado (default)</span></dd></dl></div><div data-declared-tariff-pricing><h4>Tarifas de Ailoot</h4><h4>Precios por configuración</h4><p class=\"note-s\">Relaciona cada cargo con las condiciones mostradas. Usa una tarifa para cada conjunto de configuraciones alternativas.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Configuración</th><th>Tabla de tarifas</th><th>Unidad de facturación</th><th>Cargo</th></tr></thead><tbody><tr><th data-cell-label=\"Configuración\" scope=\"row\"><span class=\"card-cell-label\">Configuración</span>Tarifas base por token</th><td data-cell-label=\"Tabla de tarifas\"><span class=\"card-cell-label\">Tabla de tarifas</span>Tarifa base</td><td data-cell-label=\"Unidad de facturación\"><span class=\"card-cell-label\">Unidad de facturación</span>—</td><td data-cell-label=\"Cargo\"><span class=\"card-cell-label\">Cargo</span><div><span>Entrada · Tokens de entrada</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Salida · Tokens de salida</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Entrada · Lectura de caché</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Entrada · Escritura en caché</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Entrada · Escritura en caché, 1 hora</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div></td></tr><tr><th data-cell-label=\"Configuración\" scope=\"row\"><span class=\"card-cell-label\">Configuración</span>segundo de audio de entrada</th><td data-cell-label=\"Tabla de tarifas\"><span class=\"card-cell-label\">Tabla de tarifas</span>—</td><td data-cell-label=\"Unidad de facturación\"><span class=\"card-cell-label\">Unidad de facturación</span>por segundo de audio de entrada</td><td data-cell-label=\"Cargo\"><span class=\"card-cell-label\">Cargo</span><div><span>Entrada · segundo de audio de entrada</span> <b>$0.000533333333334</b> <span class=\"price-unit\">por segundo de audio de entrada</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot reserva un importe estimado antes de la solicitud. Tras obtener el resultado, liquida el cargo definitivo según el uso medido. En las respuestas en flujo, la liquidación usa el registro de uso final. <a href=\"/docs/es/billing/reserve/\">Cómo funcionan la reserva y la liquidación →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Solicitudes de ejemplo</h3><h4>Ailoot Ultra · Transcripción</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Variantes del código\"><button class=\"cg-tab\" id=\"model-code-1435-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1435-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · archivo WAV real y resultado original 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-1435-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1435-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_AUDIO_FILE:?Set the path to your actual PCM WAV recording}&quot;\nexport AILOOT_AUDIO_FILE\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport base64, io, json, os, wave\nfrom pathlib import Path\naudio = Path(os.environ[&#39;AILOOT_AUDIO_FILE&#39;]).read_bytes()\nif not (audio[:4] == b&#39;RIFF&#39; and audio[8:12] == b&#39;WAVE&#39;):\n    raise SystemExit(&#39;Supply your actual PCM WAV audio file&#39;)\nwith wave.open(io.BytesIO(audio), &#39;rb&#39;) as recording:\n    if recording.getcomptype() != &#39;NONE&#39; or recording.getnframes() &lt;= 0:\n        raise SystemExit(&#39;Supply a nonempty PCM WAV recording&#39;)\nrequest = {&#39;model&#39;: &#39;google/chirp-3&#39;, &#39;input_audio&#39;: {&#39;data&#39;: base64.b64encode(audio).decode(&#39;ascii&#39;), &#39;format&#39;: &#39;wav&#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/transcriptions \\\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 original response, headers and actual X-Client-Request-ID.\n# Read existing owned records for recovery; do not resubmit an uncertain operation.\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Recibir y guardar resultados</h3><h4>Ailoot Ultra · Transcripción</h4><p class=\"note-s\">Cuerpo original completo de la respuesta, estado y cabeceras reenviadas. Este manejador no añade una estructura JSON universal, un campo de texto ni un contenedor de tarea.</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><div class=\"card-result-process\" data-all-results><h5>Conserva todos los resultados completados</h5><p class=\"note-s\">Conserva todas las respuestas, archivos y partes de contenido completos recibidos.</p><p class=\"note-s\">Conserva la respuesta completa y las cabeceras, todas las salidas reales, los identificadores originales devueltos y todos los campos de uso. Recupera la operación original sin volver a enviar la solicitud de creación.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Si es necesario revisar la respuesta original</h5><p class=\"note-s\">Conserva el X-Client-Request-ID real y la respuesta completa. Consulta los recursos originales bajo tu titularidad y sus URL firmadas exactas de contenido; no vuelvas a enviar nunca una creación incierta.</p></div><details class=\"card-about\" data-output-fields><summary>Campos de respuesta</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Campo</th><th>Tipo</th></tr></thead><tbody><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">text (when present)</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span></td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">usage (when present)</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span></td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Errores y siguientes pasos</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Respuesta</th><th>Condición</th><th>Siguiente paso</th></tr></thead><tbody><tr><th data-cell-label=\"Respuesta\" scope=\"row\"><span class=\"card-cell-label\">Respuesta</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Condición\"><span class=\"card-cell-label\">Condición</span>El cuerpo JSON o el ID canónico explícito del modelo no es válido.</td><td data-cell-label=\"Siguiente paso\"><span class=\"card-cell-label\">Siguiente paso</span>Conserva la respuesta y corrige el campo indicado de la solicitud.</td></tr><tr><th data-cell-label=\"Respuesta\" scope=\"row\"><span class=\"card-cell-label\">Respuesta</span>401 · <code>authentication_error</code></th><td data-cell-label=\"Condición\"><span class=\"card-cell-label\">Condición</span>La clave API de Ailoot no es válida.</td><td data-cell-label=\"Siguiente paso\"><span class=\"card-cell-label\">Siguiente paso</span>Usa tu clave API autorizada de Ailoot.</td></tr><tr><th data-cell-label=\"Respuesta\" scope=\"row\"><span class=\"card-cell-label\">Respuesta</span>403 · <code>permission_error</code></th><td data-cell-label=\"Condición\"><span class=\"card-cell-label\">Condición</span>El grupo de la clave no tiene acceso a este método.</td><td data-cell-label=\"Siguiente paso\"><span class=\"card-cell-label\">Siguiente paso</span>Conserva los detalles del error devueltos.</td></tr><tr><th data-cell-label=\"Respuesta\" scope=\"row\"><span class=\"card-cell-label\">Respuesta</span>404 · <code>not_found_error</code></th><td data-cell-label=\"Condición\"><span class=\"card-cell-label\">Condición</span>El método seleccionado no tiene ninguna ruta admitida.</td><td data-cell-label=\"Siguiente paso\"><span class=\"card-cell-label\">Siguiente paso</span>Conserva los detalles del error devueltos.</td></tr><tr><th data-cell-label=\"Respuesta\" scope=\"row\"><span class=\"card-cell-label\">Respuesta</span>422 · <code>price_unavailable</code></th><td data-cell-label=\"Condición\"><span class=\"card-cell-label\">Condición</span>La tarifa aceptada no puede obtener la cantidad de entrada o el límite que necesita.</td><td data-cell-label=\"Siguiente paso\"><span class=\"card-cell-label\">Siguiente paso</span>Conserva la respuesta; utiliza la representación de entrada exigida por la tarifa aceptada.</td></tr><tr><th data-cell-label=\"Respuesta\" scope=\"row\"><span class=\"card-cell-label\">Respuesta</span>503 · <code></code></th><td data-cell-label=\"Condición\"><span class=\"card-cell-label\">Condición</span>El almacenamiento, la ruta, el precio del método o la reserva necesarios no están disponibles.</td><td data-cell-label=\"Siguiente paso\"><span class=\"card-cell-label\">Siguiente paso</span>Conserva la respuesta original completa. Una reserva incierta no autoriza un reenvío.</td></tr><tr><th data-cell-label=\"Respuesta\" scope=\"row\"><span class=\"card-cell-label\">Respuesta</span>502 · <code>server_error</code></th><td data-cell-label=\"Condición\"><span class=\"card-cell-label\">Condición</span>Es necesario comprobar el resultado original, el uso o la liquidación.</td><td data-cell-label=\"Siguiente paso\"><span class=\"card-cell-label\">Siguiente paso</span>Conserva el ID real de solicitud y la respuesta original. Consulta el registro existente bajo tu titularidad; no vuelvas a enviar la solicitud de creación.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Alias</h3><h4>Alias del modelo</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=google%2Fchirp-3&amp;route=Ultra&amp;caller=google%2Fchirp-3&amp;fmt=transcriptions\"><code>google/chirp-3</code></a></span></p><h4>Alias de rutas de métodos</h4><p class=\"note-s\">Usa las rutas de método indicadas arriba.</p><h4>ID de modelo relacionados</h4><p class=\"note-s\"><a href=\"#m=google%2Fchirp-3&amp;route=Ultra&amp;caller=google%2Fchirp-3&amp;fmt=transcriptions\"><code>google/chirp-3</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "google/chirp-3",
        "fmt": "transcriptions",
        "http": "POST",
        "path": "/v1/audio/transcriptions",
        "request_model_id": "google/chirp-3",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|transcriptions|/v1/audio/transcriptions|google%2Fchirp-3",
      "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.",
            "errors": [
              {
                "code": null,
                "condition": "El cuerpo JSON o el ID canónico explícito del modelo no es válido.",
                "http_status": 400,
                "recovery": "Conserva la respuesta y corrige el campo indicado de la solicitud.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "La clave API de Ailoot no es válida.",
                "http_status": 401,
                "recovery": "Usa tu clave API autorizada de Ailoot.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "El grupo de la clave no tiene acceso a este método.",
                "http_status": 403,
                "recovery": "Conserva los detalles del error devueltos.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "El método seleccionado no tiene ninguna ruta admitida.",
                "http_status": 404,
                "recovery": "Conserva los detalles del error devueltos.",
                "type": "not_found_error"
              },
              {
                "code": null,
                "condition": "La tarifa aceptada no puede obtener la cantidad de entrada o el límite que necesita.",
                "http_status": 422,
                "recovery": "Conserva la respuesta; utiliza la representación de entrada exigida por la tarifa aceptada.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "El almacenamiento, la ruta, el precio del método o la reserva necesarios no están disponibles.",
                "http_status": 503,
                "recovery": "Conserva la respuesta original completa. Una reserva incierta no autoriza un reenvío.",
                "type": null
              },
              {
                "code": null,
                "condition": "Es necesario comprobar el resultado original, el uso o la liquidación.",
                "http_status": 502,
                "operation_id_source": "actual X-Client-Request-ID",
                "recovery": "Conserva el ID real de solicitud y la respuesta original. Consulta el registro existente bajo tu titularidad; no vuelvas a enviar la solicitud de creación.",
                "response_headers": {
                  "x-should-retry": "false"
                },
                "type": "server_error"
              }
            ],
            "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 content URL"
                }
              ],
              "dedicated_method_polling_or_cancel": false,
              "mode": "synchronous_result_then_owned_library",
              "original_POST_adds_task_envelope": false,
              "status": [
                {
                  "http": "GET",
                  "id_source": "exact task_id from an existing owned media record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Conserva el X-Client-Request-ID real y la respuesta completa. Consulta los recursos originales bajo tu titularidad y sus URL firmadas exactas de contenido; no vuelvas a enviar nunca una creación incierta."
            },
            "outputs": {
              "all_results": "Conserva la respuesta completa y las cabeceras, todas las salidas reales, los identificadores originales devueltos y todos los campos de uso. Recupera la operación original sin volver a enviar la solicitud de creación.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "text (when present)",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage (when present)",
                  "type": null
                }
              ],
              "result": "Cuerpo original completo de la respuesta, estado y cabeceras reenviadas. Este manejador no añade una estructura JSON universal, un campo de texto ni un contenedor de tarea."
            },
            "parameters": [
              {
                "default_known": false,
                "enum": [
                  "google/chirp-3"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "default_known": false,
                "enum_known": false,
                "name": "input_audio",
                "required": true,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "input_audio": {
                  "properties": {
                    "data": {
                      "contentEncoding": "base64",
                      "type": "string"
                    },
                    "format": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "format"
                  ],
                  "type": "object"
                },
                "model": {
                  "enum": [
                    "google/chirp-3"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input_audio"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": true,
              "body": {
                "input_audio": {
                  "data": "${BASE64_ACTUAL_WAV_BYTES}",
                  "format": "wav"
                },
                "model": "google/chirp-3"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "El ejemplo lee tu archivo PCM WAV real y no vacío, codifica todos los bytes del archivo en base64 y envía input_audio.format con el valor wav."
            ],
            "material_types": [
              "audio"
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "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 content URL"
              }
            ],
            "dedicated_method_polling_or_cancel": false,
            "mode": "synchronous_result_then_owned_library",
            "original_POST_adds_task_envelope": false,
            "status": [
              {
                "http": "GET",
                "id_source": "task_id exacto de un registro existente de medios bajo tu titularidad",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain the actual X-Client-Request-ID and complete response. Read the original owned assets and their exact signed content URLs; never resubmit an uncertain creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/transcriptions"
          },
          "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": "text",
            "fields": [
              {
                "description": null,
                "name": "text (when present)",
                "type": null
              },
              {
                "description": null,
                "name": "usage (when present)",
                "type": null
              }
            ],
            "result": "Complete original response body, status and forwarded headers. No universal JSON shape, text field or task envelope is added by this handler."
          }
        },
        "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 audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.000533333333334",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.000533333333334",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_AUDIO_FILE:?Set the path to your actual PCM WAV recording}\"\nexport AILOOT_AUDIO_FILE\npython3 - <<'PY_REQUEST'\nimport base64, io, json, os, wave\nfrom pathlib import Path\naudio = Path(os.environ['AILOOT_AUDIO_FILE']).read_bytes()\nif not (audio[:4] == b'RIFF' and audio[8:12] == b'WAVE'):\n    raise SystemExit('Supply your actual PCM WAV audio file')\nwith wave.open(io.BytesIO(audio), 'rb') as recording:\n    if recording.getcomptype() != 'NONE' or recording.getnframes() <= 0:\n        raise SystemExit('Supply a nonempty PCM WAV recording')\nrequest = {'model': 'google/chirp-3', 'input_audio': {'data': base64.b64encode(audio).decode('ascii'), 'format': 'wav'}}\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/transcriptions \\\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 original response, headers and actual X-Client-Request-ID.\n# Read existing owned records for recovery; do not resubmit an uncertain operation.\n",
            "label": "curl · actual WAV file and complete original result",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "The example reads your actual nonempty PCM WAV file, encodes the complete file bytes as base64 and sends input_audio.format as wav.",
          "The format value in the example is the documented recipe; no model-specific format list, limit or default is asserted.",
          "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": [
          "audio"
        ],
        "label": "Transcripción",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "audio_transcriptions",
        "out": null,
        "output": [
          "text"
        ],
        "path": "/v1/audio/transcriptions",
        "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_second": 0.000533333333334
          }
        },
        "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 audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.000533333333334",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.000533333333334",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "request_model_id": "google/chirp-3",
        "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.000533333333334",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.000533333333334",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ]
      }
    }
  ],
  "model_id": "google/chirp-3",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "5f0e91f3ea6c26f1087a539ea42e2532b1ed976244d5c70760850bde79882842",
    "input_html_sha256": "60d5d63fe793a9c85bf872378418b6f7908dfca460e0b0341ccb8441405d26bc",
    "private_audit_sha256": "fe310ca146559038c9b6dc70e2ecdc5dffc26b4e8bd8b82ae9df122b783a519d",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/es/google-chirp-3/",
    "description": "Google Chirp 3 es un modelo multilingüe de reconocimiento del habla para audio en tiempo real, grabaciones breves y transcripciones por lotes de mayor duración. Ofrece detección automática del idioma, puntuación, adaptación de vocabulario y metadatos temporales o de hablantes según el modo. Su reductor de ruido disminuye el ruido de fondo, pero no puede eliminar otras voces.",
    "locale": "es",
    "md_url": "https://ailoot.ai/models/es/google-chirp-3/index.md",
    "title": "Google: Chirp 3 — Ailoot",
    "url": "https://ailoot.ai/models/es/google-chirp-3/"
  },
  "rawModel": {
    "about": "Google Chirp 3 es un modelo multilingüe de reconocimiento automático del habla que convierte audio hablado en texto. Google lo documenta como el modelo de transcripción Chirp 3 de su familia Speech-to-Text V2, con el identificador de modelo chirp_3. Su finalidad es reconocer habla grabada o transmitida en tiempo real, con detección de idioma y funciones específicas de transcripción. El recurso resultante es una transcripción y los metadatos admitidos por el método de reconocimiento seleccionado, en lugar de voz generada o una respuesta abierta de asistente.\n\nEl fabricante distingue el reconocimiento en tiempo real, el reconocimiento síncrono para fragmentos cortos y el reconocimiento por lotes para grabaciones más largas. Elige el modo según el audio de origen y el resultado requerido. Para una nota de voz breve, una respuesta textual completa puede ser suficiente. Para una entrevista o una llamada grabada, un resultado por lotes con información de hablantes puede ser más útil. Para subtítulos en directo o una interfaz de órdenes habladas, distingue el texto intermedio del resultado final del reconocimiento y conserva el intervalo de audio que describe.\n\nPrepara el audio con la codificación que espera la implementación de reconocimiento. Los ejemplos de Chirp 3 de Google utilizan detección automática de la decodificación para archivos grabados y decodificación explícita para una configuración de transmisión de audio en bruto. La referencia asociada del decodificador V2 incluye WAV PCM o audio con compansión, FLAC, MP3, Opus en Ogg/WebM y AAC en contenedores MP4, M4A o MOV, entre sus codificaciones admitidas. El nombre de un contenedor no sustituye al códec real ni a la configuración de muestreo. Conserva el habla clara y evita una saturación grave de la señal o conversiones innecesarias que pierdan detalles audibles.\n\nChirp 3 puede identificar y transcribir automáticamente el idioma dominante, y un conjunto de variantes regionales esperadas puede acotar sus opciones de reconocimiento. La disponibilidad de idiomas varía según el método y la función. La lista de idiomas de transcripción es más amplia que la de diarización, por lo que reconocer un idioma no demuestra que todas las funciones de hablantes o marcas temporales sean aplicables a él. Utiliza la variante regional que corresponda a la grabación y conserva para su revisión los nombres que aparezcan al alternar idiomas o los términos especializados. Una etiqueta de idioma detectado forma parte del resultado, no es prueba de que todas las palabras poco habituales se hayan reconocido correctamente.\n\nLa diarización de hablantes agrupa el habla por voz en una grabación de un solo canal. Google proporciona un ejemplo de transcripción por lotes con información del hablante en cada palabra. Para una entrevista, conserva esas etiquetas junto con el texto reconocido y compara los cambios de hablante con la grabación antes de asignar nombres o funciones reales. Las voces parecidas, las interrupciones y el habla superpuesta pueden dificultar la atribución. Deja claras la disposición de canales de la fuente y la tarea prevista de revisión de hablantes, en lugar de tratar una etiqueta como una identidad verificada de forma independiente.\n\nLas marcas temporales también dependen del método. El reconocimiento en tiempo real proporciona marcas temporales a nivel de enunciado, mientras que las indicaciones del fabricante para el reconocimiento de archivos describen marcas de tiempo opcionales por palabra, con una posible pérdida de calidad de la transcripción. Conserva los metadatos realmente devueltos por el método elegido y revisa la alineación junto con la redacción. Un flujo de subtitulado necesita ambas cosas: texto reconocido legible y pruebas de que un límite temporal corresponde al sonido correcto. Google también advierte de que el valor de confianza devuelto por palabra no es una puntuación de confianza real, por lo que no debe utilizarse para certificar que una palabra sea correcta.\n\nLa adaptación del habla proporciona frases y nombres propios que probablemente aparezcan en la grabación. El fabricante documenta un diccionario de hasta 1,000 frases y recomienda utilizar el menor número posible de entradas pertinentes para evitar degradar el reconocimiento de otros términos. Para una presentación técnica, prepara una lista breve de nombres reales de productos y abreviaturas, y después inspecciónalos en la transcripción. La ponderación ayuda al reconocimiento a considerar un término; no demuestra que se haya pronunciado ni sustituye a una comprobación con el audio.\n\nEl modelo proporciona puntuación automática y uso automático de mayúsculas, que la interfaz documentada permite desactivar. Google también describe una función en versión preliminar para instrucciones personalizadas sobre el formato de transcripción, como la forma de escribir un nombre o una fecha concretos. Mantén esas instrucciones centradas en dar formato al habla reconocida. Una transcripción que normaliza una fecha o escribe una marca con mayúsculas sigue teniendo que conservar el significado de lo pronunciado. Un resumen, una traducción o un análisis factual son usos posteriores de la transcripción, no algo establecido por el propio resultado del reconocimiento.\n\nEl reductor de ruido integrado está pensado para disminuir la música de fondo y los sonidos del entorno, como la lluvia o el ruido de la calle. Google afirma expresamente que no puede eliminar voces humanas de fondo. Mantén esa distinción al preparar una grabación con conversaciones superpuestas. Contrasta con la fuente tanto las secciones ruidosas como las silenciosas en lugar de suponer que una transcripción aparentemente más limpia demuestra que se ha eliminado el sonido interferente. Un resultado útil mantiene identificables los pasajes inciertos para poder corregirlos.\n\nPara tareas de reconocimiento en tiempo real, la sensibilidad de detección del final de enunciado cambia el momento en que un enunciado se considera terminado. El fabricante describe los ajustes standard, short y supershort para habla prevista cada vez más breve. Un ajuste más rápido puede cortar a un hablante que hace una pausa a mitad de una idea. Adapta el ajuste al dictado natural, a una frase corta o a una orden muy breve, y conserva el estado de resultado final junto con la transcripción. Para un archivo terminado, revisa los nombres, las cantidades, las negaciones y los límites entre hablantes, y conserva después el modo elegido y el audio de origen para que el resultado pueda comprobarse o reutilizarse.",
    "alias_of": null,
    "aliases": [],
    "author": "Google",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "audio"
      ],
      "manufacturer_output": [
        "transcription"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.000533333333334",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.000533333333334",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ],
        "summary": "Consulta los precios completos de la configuración en los detalles."
      }
    ],
    "ctx": null,
    "formats": [
      "transcriptions"
    ],
    "id": "google/chirp-3",
    "input": [
      "audio"
    ],
    "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.",
            "errors": [
              {
                "code": null,
                "condition": "El cuerpo JSON o el ID canónico explícito del modelo no es válido.",
                "http_status": 400,
                "recovery": "Conserva la respuesta y corrige el campo indicado de la solicitud.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "La clave API de Ailoot no es válida.",
                "http_status": 401,
                "recovery": "Usa tu clave API autorizada de Ailoot.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "El grupo de la clave no tiene acceso a este método.",
                "http_status": 403,
                "recovery": "Conserva los detalles del error devueltos.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "El método seleccionado no tiene ninguna ruta admitida.",
                "http_status": 404,
                "recovery": "Conserva los detalles del error devueltos.",
                "type": "not_found_error"
              },
              {
                "code": null,
                "condition": "La tarifa aceptada no puede obtener la cantidad de entrada o el límite que necesita.",
                "http_status": 422,
                "recovery": "Conserva la respuesta; utiliza la representación de entrada exigida por la tarifa aceptada.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "El almacenamiento, la ruta, el precio del método o la reserva necesarios no están disponibles.",
                "http_status": 503,
                "recovery": "Conserva la respuesta original completa. Una reserva incierta no autoriza un reenvío.",
                "type": null
              },
              {
                "code": null,
                "condition": "Es necesario comprobar el resultado original, el uso o la liquidación.",
                "http_status": 502,
                "operation_id_source": "actual X-Client-Request-ID",
                "recovery": "Conserva el ID real de solicitud y la respuesta original. Consulta el registro existente bajo tu titularidad; no vuelvas a enviar la solicitud de creación.",
                "response_headers": {
                  "x-should-retry": "false"
                },
                "type": "server_error"
              }
            ],
            "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 content URL"
                }
              ],
              "dedicated_method_polling_or_cancel": false,
              "mode": "synchronous_result_then_owned_library",
              "original_POST_adds_task_envelope": false,
              "status": [
                {
                  "http": "GET",
                  "id_source": "exact task_id from an existing owned media record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Conserva el X-Client-Request-ID real y la respuesta completa. Consulta los recursos originales bajo tu titularidad y sus URL firmadas exactas de contenido; no vuelvas a enviar nunca una creación incierta."
            },
            "outputs": {
              "all_results": "Conserva la respuesta completa y las cabeceras, todas las salidas reales, los identificadores originales devueltos y todos los campos de uso. Recupera la operación original sin volver a enviar la solicitud de creación.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "text (when present)",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage (when present)",
                  "type": null
                }
              ],
              "result": "Cuerpo original completo de la respuesta, estado y cabeceras reenviadas. Este manejador no añade una estructura JSON universal, un campo de texto ni un contenedor de tarea."
            },
            "parameters": [
              {
                "default_known": false,
                "enum": [
                  "google/chirp-3"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "default_known": false,
                "enum_known": false,
                "name": "input_audio",
                "required": true,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "input_audio": {
                  "properties": {
                    "data": {
                      "contentEncoding": "base64",
                      "type": "string"
                    },
                    "format": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "format"
                  ],
                  "type": "object"
                },
                "model": {
                  "enum": [
                    "google/chirp-3"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input_audio"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": true,
              "body": {
                "input_audio": {
                  "data": "${BASE64_ACTUAL_WAV_BYTES}",
                  "format": "wav"
                },
                "model": "google/chirp-3"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "El ejemplo lee tu archivo PCM WAV real y no vacío, codifica todos los bytes del archivo en base64 y envía input_audio.format con el valor wav."
            ],
            "material_types": [
              "audio"
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "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 content URL"
              }
            ],
            "dedicated_method_polling_or_cancel": false,
            "mode": "synchronous_result_then_owned_library",
            "original_POST_adds_task_envelope": false,
            "status": [
              {
                "http": "GET",
                "id_source": "task_id exacto de un registro existente de medios bajo tu titularidad",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain the actual X-Client-Request-ID and complete response. Read the original owned assets and their exact signed content URLs; never resubmit an uncertain creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/transcriptions"
          },
          "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": "text",
            "fields": [
              {
                "description": null,
                "name": "text (when present)",
                "type": null
              },
              {
                "description": null,
                "name": "usage (when present)",
                "type": null
              }
            ],
            "result": "Complete original response body, status and forwarded headers. No universal JSON shape, text field or task envelope is added by this handler."
          }
        },
        "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 audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.000533333333334",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.000533333333334",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_AUDIO_FILE:?Set the path to your actual PCM WAV recording}\"\nexport AILOOT_AUDIO_FILE\npython3 - <<'PY_REQUEST'\nimport base64, io, json, os, wave\nfrom pathlib import Path\naudio = Path(os.environ['AILOOT_AUDIO_FILE']).read_bytes()\nif not (audio[:4] == b'RIFF' and audio[8:12] == b'WAVE'):\n    raise SystemExit('Supply your actual PCM WAV audio file')\nwith wave.open(io.BytesIO(audio), 'rb') as recording:\n    if recording.getcomptype() != 'NONE' or recording.getnframes() <= 0:\n        raise SystemExit('Supply a nonempty PCM WAV recording')\nrequest = {'model': 'google/chirp-3', 'input_audio': {'data': base64.b64encode(audio).decode('ascii'), 'format': 'wav'}}\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/transcriptions \\\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 original response, headers and actual X-Client-Request-ID.\n# Read existing owned records for recovery; do not resubmit an uncertain operation.\n",
            "label": "curl · actual WAV file and complete original result",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "The example reads your actual nonempty PCM WAV file, encodes the complete file bytes as base64 and sends input_audio.format as wav.",
          "The format value in the example is the documented recipe; no model-specific format list, limit or default is asserted.",
          "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": [
          "audio"
        ],
        "label": "Transcripción",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "audio_transcriptions",
        "out": null,
        "output": [
          "text"
        ],
        "path": "/v1/audio/transcriptions",
        "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_second": 0.000533333333334
          }
        },
        "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 audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.000533333333334",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.000533333333334",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "request_model_id": "google/chirp-3",
        "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.000533333333334",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.000533333333334",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "google/chirp-3",
        "request_model_id": "google/chirp-3",
        "route_label": "Ultra"
      }
    ],
    "name": "Google: Chirp 3",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "short": "Google Chirp 3 es un modelo multilingüe de reconocimiento del habla para audio en tiempo real, grabaciones breves y transcripciones por lotes de mayor duración. Ofrece detección automática del idioma, puntuación, adaptación de vocabulario y metadatos temporales o de hablantes según el modo. Su reductor de ruido disminuye el ruido de fondo, pero no puede eliminar otras voces."
  },
  "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": "Google Chirp 3 es un modelo multilingüe de reconocimiento del habla para audio en tiempo real, grabaciones breves y transcripciones por lotes de mayor duración. Ofrece detección automática del idioma, puntuación, adaptación de vocabulario y metadatos temporales o de hablantes según el modo. Su reductor de ruido disminuye el ruido de fondo, pero no puede eliminar otras voces.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "e7271c9a27006773d2068a9a6f60cb089ae3e3e968f7b65074ae82e287d91e1f",
    "renderer_sha256": "b6d488b4bdee68568e5b17d2d4871b2ba1885e1032091b635a7a58ad2ca224e7"
  },
  "sourceRevision": "d5ca5f5ed20edddc8c85753580f43226a17a60a02f6ba65978f54ba76057f375"
}
