docs: guía de autoservicio TTS para Inma/Mixbot (#222) #223
@@ -4,11 +4,10 @@
|
|||||||
> Rafa (issue [#222](https://gitea.feadulta.com/rafa/feadulta/issues/222)): dejar de pedirle
|
> Rafa (issue [#222](https://gitea.feadulta.com/rafa/feadulta/issues/222)): dejar de pedirle
|
||||||
> el audio a Hermes y generarlo y subirlo vosotros mismos, con vuestro propio token de MiniMax.
|
> el audio a Hermes y generarlo y subirlo vosotros mismos, con vuestro propio token de MiniMax.
|
||||||
>
|
>
|
||||||
> **Estado a 2026-08-31:** el proceso de generación (este documento) está completo y probado.
|
> **Estado a 2026-08-31:** completo y **desplegado en producción**. El endpoint
|
||||||
> **Subir el resultado al artículo sigue bloqueado** — falta un endpoint REST (`fea/v1/subir-audio`)
|
> `fea/v1/subir-audio` (PR [#224](https://gitea.feadulta.com/rafa/feadulta/pulls/224)) ya está
|
||||||
> para enganchar el mp3 al post, tal como pedía el punto 1 del #222. Ese endpoint lo está
|
> en prod y verificado de extremo a extremo por Claudix con una subida real. El punto 1 del
|
||||||
> construyendo Codix (ver aviso al final). Hasta que esté desplegado podéis generar y guardar
|
> #222 queda cerrado — ver §6 para la llamada real.
|
||||||
> los mp3, pero no publicarlos en el sitio.
|
|
||||||
>
|
>
|
||||||
> Este documento sustituye, para el caso de uso "Inma/Mixbot generan directamente", a la
|
> Este documento sustituye, para el caso de uso "Inma/Mixbot generan directamente", a la
|
||||||
> sección 4 de `docs/guia-tts-traduccion-inma.md` (que describe el flujo antiguo vía Hermes
|
> sección 4 de `docs/guia-tts-traduccion-inma.md` (que describe el flujo antiguo vía Hermes
|
||||||
@@ -198,23 +197,46 @@ este paso y avisad a Rafa/Claudix — es preferible subir un audio sin el acabad
|
|||||||
nada, pero que quede constancia de que ese paso se saltó (para que quien revise sepa por qué
|
nada, pero que quede constancia de que ese paso se saltó (para que quien revise sepa por qué
|
||||||
suena ligeramente distinto al resto).
|
suena ligeramente distinto al resto).
|
||||||
|
|
||||||
## 6. Subir el resultado al artículo — BLOQUEADO hoy
|
## 6. Subir el resultado al artículo
|
||||||
|
|
||||||
Aquí es donde entra el hueco real que reportó el #222: **no hay forma de enganchar el mp3 al
|
El endpoint que faltaba ya está desplegado en producción (#224), con el mismo patrón que
|
||||||
post por REST todavía.** Los campos que necesita el sitio para reproducir el audio
|
`fea/v1/subir-avatar` (#175) que ya usáis:
|
||||||
(`fea_audio_url`, `fea_audio_done`, más `fea_audio_voice` para saber qué voz sonó) no están
|
|
||||||
expuestos en `/wp/v2/posts/{id}`, y el namespace `fea/v1` no tiene endpoint de audio.
|
|
||||||
|
|
||||||
**Esto se resuelve con un endpoint `fea/v1/subir-audio`**, con el mismo patrón que
|
```
|
||||||
`fea/v1/subir-avatar` (#175) que ya usáis: multipart con `post_id` + fichero `audio` (mp3),
|
POST https://www.feadulta.com/wp-json/fea/v1/subir-audio
|
||||||
autenticación igual que el resto de endpoints `fea/v1` (vuestro usuario Editor/Administrator),
|
Authorization: Basic <usuario:contraseña_de_aplicación> (o el header equivalente que useis)
|
||||||
y como respuesta el valor anterior de esos metas para poder deshacer si algo suena mal.
|
Content-Type: multipart/form-data
|
||||||
**Codix lo está construyendo** a partir de esta misma información — en cuanto esté
|
|
||||||
desplegado, se actualiza este documento con el ejemplo de llamada real y se cierra el punto 1
|
|
||||||
del #222.
|
|
||||||
|
|
||||||
Mientras tanto: generad y guardad los mp3 con normalidad (pasos 1-5), pero no hay manera de
|
post_id=<ID del artículo>
|
||||||
publicarlos todavía — no es un fallo vuestro, es infraestructura pendiente.
|
audio=<fichero .mp3, máx. 25 MiB>
|
||||||
|
voice_id=<opcional — el voice_id usado, para que quede registrado>
|
||||||
|
```
|
||||||
|
|
||||||
|
Respuesta (`201`):
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"post_id": 56785,
|
||||||
|
"audio_url": "https://www.feadulta.com/wp-content/uploads/tts/56785.mp3",
|
||||||
|
"voice_id": "NicoFeadulta2026",
|
||||||
|
"sha256": "<huella del mp3 subido>",
|
||||||
|
"previous_audio": {"url": null, "voice": null, "done": null, "sha256": null, "error": null}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
`previous_audio` trae el estado de antes de vuestra subida (o todo `null` si el post no tenía
|
||||||
|
audio) — guardadlo si vais a reemplazar un audio ya publicado, por si hay que deshacer.
|
||||||
|
|
||||||
|
**Límite real: 25 MiB por fichero** (`upload_max_filesize`/`post_max_size` del servidor, y el
|
||||||
|
propio endpoint valida lo mismo con un mensaje claro). Los audios de la carta semanal rondan
|
||||||
|
5-6 MB, así que hay margen — pero si algún artículo muy largo genera un mp3 más grande,
|
||||||
|
avisad en vez de forzarlo: el límite se fijó a propósito en 25 MiB (no en los 256 MiB que se
|
||||||
|
había propuesto al principio) porque el caso de 198 MB del #212/#190 era un error de
|
||||||
|
generación a corregir, no un tamaño a soportar.
|
||||||
|
|
||||||
|
Solo admite `.mp3`/`audio/mpeg` — mismo nivel de permiso que el resto de endpoints `fea/v1`
|
||||||
|
de escritura (vuestro usuario Editor/Administrator). Verificado por Claudix el 2026-08-31 con
|
||||||
|
una subida real de extremo a extremo contra prod (post desechable, borrado después).
|
||||||
|
|
||||||
## 7. Lo que NO cambia con este traspaso
|
## 7. Lo que NO cambia con este traspaso
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user