v0.72.0 — Cambiar de voz ahora corre OpenVoice
Cambiar una voz por otra ahora corre OpenVoice.
Le das una grabación y una muestra de la voz que querés, y devuelve lo mismo dicho con
esa voz. Antes lo hacía SpeechT5, que es de 2022.
Por qué OpenVoice y no los que salen primero
F5-TTS, E2-TTS y XTTS aparecen antes en cualquier búsqueda y clonan muy bien. Pero
publican el código con licencia permisiva y los pesos con CC-BY-NC: no comercial. Eso
alcanza para un experimento y no para meterlo en una aplicación que otra gente descarga.
OpenVoice V2 es MIT, con "free for commercial use" escrito en su propio README.
Le faltaba el camino ONNX —los exports que circulan son repos sin mantenimiento— así que
se hizo uno, documentado y con la paridad medida:
port-openvoice-onnx.
Qué tan bien clona
Convirtiendo una voz femenina a una masculina, similitud coseno entre embeddings:
| convertido vs voz destino | 0,913 |
| convertido vs voz original | 0,535 |
| línea base: destino vs original | 0,511 |
Se parece mucho al destino, y ya no se parece al original más de lo que el destino se le
parecía.
Salvedad: está medido con el propio encoder de hablante de OpenVoice, que lo favorece.
Sirve para comparar configuraciones de este modelo entre sí; no es una comparación
limpia contra el modelo anterior, que se midió con otro encoder. Por eso no ponemos los
dos números en la misma tabla.
Paridad del port contra el modelo original: 4,54e-09 en el conversor y 9,54e-07 en
el extractor de timbre.
El modelo viejo no se borra
Si ya tenías bajado el pack de SpeechT5, la función te sigue funcionando igual. Sería una
molestia gratuita hacerte bajar 128 MB para recuperar algo que ya andaba.
En una instalación nueva se ofrece OpenVoice, que pesa menos y clona mejor.
Correcciones
- La pantalla de Tareas decía que "cambiar de voz" no estaba lista aunque el modelo
nuevo estuviera instalado y funcionando, y encima mandaba a bajar 400+ MB del viejo. Era
una regresión introducida al agregar OpenVoice, detectada y corregida antes de publicar. - "Video a video" le echaba la culpa a ONNX. La generación de video de esta app corre
por Vulkan, sin ONNX en ningún lado, así que ese motivo hacía pensar que faltaba algo que
no falta. Ahora dice lo que pasa: la función no está construida. - El empaquetado ya no se rompe cuando un editor abierto sobre el repo tiene tomado el
Python de build.
3905 pruebas de backend y 1226 de frontend, todas en verde.