<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>WebRTC on KnightLi Blog</title>
        <link>https://knightli.com/es/tags/webrtc/</link>
        <description>Recent content in WebRTC on KnightLi Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>es</language>
        <lastBuildDate>Thu, 11 Jun 2026 08:22:48 +0800</lastBuildDate><atom:link href="https://knightli.com/es/tags/webrtc/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Qué es OpenTalking: un framework open source para poner en marcha conversaciones con humanos digitales de IA</title>
        <link>https://knightli.com/es/2026/06/11/opentalking-realtime-digital-human-framework/</link>
        <pubDate>Thu, 11 Jun 2026 08:22:48 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/06/11/opentalking-realtime-digital-human-framework/</guid>
        <description>&lt;p&gt;OpenTalking es un framework open source de datascale-ai para orquestar conversaciones en tiempo real con humanos digitales. No intenta resolver solo el problema puntual de “hacer que una imagen mueva la boca”. Su objetivo es conectar las piezas habituales de un producto de conversación con humano digital: interacción frontend, estado de sesión, respuestas del LLM, TTS y selección de voz, STT, eventos de subtítulos, control de interrupciones, reproducción de audio y video por WebRTC, y backends de síntesis locales o remotos.&lt;/p&gt;
&lt;p&gt;Por eso conviene no verlo solo como un script de arranque para un modelo de humano digital. Se parece más al esqueleto de ingeniería de una línea de producción de humanos digitales: los modelos pueden cambiarse, los servicios de voz pueden cambiarse, la inferencia puede ejecutarse localmente o de forma remota, y el frontend unifica personajes, voces, estado de conexión de modelos y experiencia de conversación en tiempo real.&lt;/p&gt;
&lt;h2 id=&#34;para-qué-sirve&#34;&gt;Para qué sirve
&lt;/h2&gt;&lt;p&gt;OpenTalking encaja en tres tipos de necesidades.&lt;/p&gt;
&lt;p&gt;La primera es validar rápidamente un producto de conversación con humanos digitales. El proyecto ofrece modo &lt;code&gt;mock&lt;/code&gt;, así que no hace falta descargar pesos de modelos ni desplegar un backend de inferencia de video desde el principio. Aun así, puedes probar la cadena de API, LLM, TTS, STT, WebRTC y reproducción en navegador. La imagen del humano digital usa un frame estático, pero el diálogo, los subtítulos, el TTS en streaming y la transmisión ya se pueden validar.&lt;/p&gt;
&lt;p&gt;La segunda es renderizado en tiempo real en una sola máquina con GPU de consumo. El proyecto permite conectar backends locales como &lt;code&gt;quicktalk&lt;/code&gt;, &lt;code&gt;wav2lip&lt;/code&gt; y &lt;code&gt;musetalk&lt;/code&gt;, adecuados para máquinas tipo 3090 / 4090 cuando se quiere renderizado de video real, sincronización labial y validación de avatares personalizados.&lt;/p&gt;
&lt;p&gt;La tercera es despliegue privado o de alta calidad. Si importan la calidad visual, varias GPU, GPU/NPU remotas o aislamiento de production, puedes conectar modelos de mayor calidad como &lt;code&gt;flashtalk&lt;/code&gt; o &lt;code&gt;flashhead&lt;/code&gt; mediante OmniRT, separando la capa de orquestación de la capa de inferencia.&lt;/p&gt;
&lt;h2 id=&#34;el-valor-del-webui&#34;&gt;El valor del WebUI
&lt;/h2&gt;&lt;p&gt;OpenTalking ofrece una interfaz Web para gestionar la cadena de conversación del humano digital. Desde la interfaz puedes elegir o crear personajes, configurar voz, LLM, TTS, STT y modelo controlador, revisar el estado de conexión de modelos y validar en la misma página la conversación en tiempo real, subtítulos y reproducción de audio/video.&lt;/p&gt;
&lt;p&gt;Esto es importante en ingeniería. Muchos demos de humanos digitales solo responden a “¿el modelo corre?”. Pero cuando intentas convertirlo en producto aparecen más preguntas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cómo gestionar assets de personajes;&lt;/li&gt;
&lt;li&gt;Cómo cambiar voces y proveedores de TTS;&lt;/li&gt;
&lt;li&gt;Cómo configurar keys y base URLs de LLM, STT y TTS;&lt;/li&gt;
&lt;li&gt;Si el backend del modelo está online;&lt;/li&gt;
&lt;li&gt;Cómo observar latencia del primer frame, interrupciones, subtítulos y sincronización audio-video;&lt;/li&gt;
&lt;li&gt;Cómo permitir que usuarios normales prueben en el navegador sin pedir a ingeniería que lea logs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El WebUI de OpenTalking reúne estas entradas y reduce la fricción entre un demo de modelo y un prototipo de producto.&lt;/p&gt;
&lt;h2 id=&#34;ruta-rápida-de-inicio&#34;&gt;Ruta rápida de inicio
&lt;/h2&gt;&lt;p&gt;La primera vez, conviene empezar con modo Mock para ejecutar la cadena completa.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;DIGITAL_HUMAN_HOME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/opt/digital_human
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir -p &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$DIGITAL_HUMAN_HOME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$DIGITAL_HUMAN_HOME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/datascale-ai/opentalking.git &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; opentalking
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;UV_DEFAULT_INDEX&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;https://pypi.tuna.tsinghua.edu.cn/simple
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uv sync --extra dev --python 3.11
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;source&lt;/span&gt; .venv/bin/activate
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp .env.example .env
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Los requisitos incluyen Python 3.10+ (recomendado 3.11), Node.js 18+ y FFmpeg. En &lt;code&gt;.env&lt;/code&gt;, configura al menos los ajustes de LLM / TTS. Si usas &lt;code&gt;edge&lt;/code&gt; TTS, no necesitas key.&lt;/p&gt;
&lt;p&gt;Arranque en modo Mock:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$DIGITAL_HUMAN_HOME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/opentalking&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bash scripts/start_unified.sh --mock
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;La dirección frontend predeterminada es:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://localhost:5173
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si quieres cambiar puertos, indícalos explícitamente:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bash scripts/start_unified.sh --mock --api-port &lt;span class=&#34;m&#34;&gt;8210&lt;/span&gt; --web-port &lt;span class=&#34;m&#34;&gt;5280&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;El objetivo de este paso no es la calidad visual, sino confirmar que navegador, API, LLM, TTS, STT, eventos de subtítulos y transporte WebRTC se conectan correctamente. Cuando la cadena funcione, decide si descargar pesos de modelos y desplegar un backend de inferencia.&lt;/p&gt;
&lt;h2 id=&#34;parámetros-de-arranque-habituales&#34;&gt;Parámetros de arranque habituales
&lt;/h2&gt;&lt;p&gt;El proyecto recomienda &lt;code&gt;scripts/start_unified.sh&lt;/code&gt; como punto de entrada unificado. Los parámetros comunes se entienden mejor por su uso:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--mock&lt;/code&gt;: usa el Mock integrado, sin pesos de modelo ni backend de inferencia de video;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--backend &amp;lt;mock|local|omnirt|direct_ws&amp;gt;&lt;/code&gt;: especifica el backend de inferencia;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--model &amp;lt;name&amp;gt;&lt;/code&gt;: especifica el modelo, por ejemplo &lt;code&gt;quicktalk&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--omnirt &amp;lt;url&amp;gt;&lt;/code&gt;: conecta con un servicio de inferencia OmniRT;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--api-port &amp;lt;port&amp;gt;&lt;/code&gt;: define el puerto backend de OpenTalking;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--web-port &amp;lt;port&amp;gt;&lt;/code&gt;: define el puerto del WebUI;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--host &amp;lt;host&amp;gt;&lt;/code&gt;: define la dirección de escucha del WebUI;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--env &amp;lt;file&amp;gt;&lt;/code&gt;: especifica la ubicación del archivo env.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Por ejemplo, ruta local QuickTalk:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bash scripts/start_unified.sh --backend &lt;span class=&#34;nb&#34;&gt;local&lt;/span&gt; --model quicktalk
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Ruta remota OmniRT:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bash scripts/start_unified.sh &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --backend omnirt &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --model flashtalk &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --api-port &lt;span class=&#34;m&#34;&gt;8210&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --web-port &lt;span class=&#34;m&#34;&gt;5280&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --omnirt http://&amp;lt;gpu-server&amp;gt;:9000
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;cómo-elegir-entre-las-rutas-de-despliegue&#34;&gt;Cómo elegir entre las rutas de despliegue
&lt;/h2&gt;&lt;p&gt;El README de OpenTalking separa bien las rutas de despliegue. Una forma más práctica de pensarlo es: primero pregunta si necesitas renderizado de video real; luego pregunta si la inferencia debe estar en la misma máquina que el servicio Web.&lt;/p&gt;
&lt;p&gt;Si solo quieres validar la cadena, usa &lt;code&gt;mock&lt;/code&gt;. No requiere GPU ni pesos de modelos, y sirve para levantar el sistema el primer día.&lt;/p&gt;
&lt;p&gt;Si tienes una GPU de consumo y quieres renderizado real en tiempo real en una sola máquina, empieza por &lt;code&gt;quicktalk&lt;/code&gt;. La referencia del proyecto apunta a máquinas de clase 3090 / 4090, adecuadas para validar avatares personalizados y video en tiempo real.&lt;/p&gt;
&lt;p&gt;Si solo necesitas sincronización labial ligera y validación de avatar personalizado, mira &lt;code&gt;wav2lip&lt;/code&gt;. Tiene menos presión de despliegue y funciona bien como ruta ligera.&lt;/p&gt;
&lt;p&gt;Si necesitas una cadena de audio completamente local y privada, combina &lt;code&gt;sensevoice&lt;/code&gt;, &lt;code&gt;local_cosyvoice&lt;/code&gt; y &lt;code&gt;quicktalk&lt;/code&gt;, moviendo STT y TTS a modelos locales. Esta ruta es más pesada, pero encaja cuando no quieres depender de servicios de voz en la nube.&lt;/p&gt;
&lt;p&gt;Si buscas mayor calidad visual, varias GPU o aislamiento de production, coloca la inferencia en remoto y conecta &lt;code&gt;flashtalk&lt;/code&gt; o &lt;code&gt;flashhead&lt;/code&gt; mediante OmniRT. En ese caso, OpenTalking se parece más a una capa de orquestación: gestiona sesiones, frontend, configuración de servicios y llamadas al endpoint de inferencia.&lt;/p&gt;
&lt;h2 id=&#34;soporte-de-modelos-y-expectativas-de-recursos&#34;&gt;Soporte de modelos y expectativas de recursos
&lt;/h2&gt;&lt;p&gt;Las rutas de modelos actuales se pueden resumir así:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;mock&lt;/code&gt;: frame estático como marcador, sin GPU;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;quicktalk&lt;/code&gt;: template video + audio, GPU CUDA local, recomendado 3090 / 4090;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;wav2lip&lt;/code&gt;: imagen de referencia o frames + audio, adecuado para &lt;code&gt;local&lt;/code&gt; u &lt;code&gt;omnirt&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;musetalk&lt;/code&gt;: full frames + audio, más exigente en VRAM;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;soulx-flashtalk-14b&lt;/code&gt;: portrait + audio, adecuado para OmniRT en multi-GPU / NPU;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;soulx-flashhead-1.3b&lt;/code&gt;: portrait + audio, también orientado a inferencia remota de mayor calidad.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El README también ofrece una referencia para GPU de consumo: &lt;code&gt;quicktalk&lt;/code&gt; en RTX 3090 con template video + audio produce 720x900 / 25fps, usa alrededor de 3.8 GiB de VRAM y alcanza unos 35 fps de generación. Es una expectativa aproximada antes de desplegar; la experiencia real depende de construcción del primer frame, caché, resolución, modelos de audio y entorno de máquina.&lt;/p&gt;
&lt;h2 id=&#34;qué-cuidar-en-la-configuración&#34;&gt;Qué cuidar en la configuración
&lt;/h2&gt;&lt;p&gt;OpenTalking tiene bastantes opciones de configuración. En particular, LLM, STT y TTS ya no comparten una única fallback key. Incluso si usas la misma key de DashScope, debes escribirla por separado en las variables correspondientes:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENTALKING_LLM_BASE_URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;https://dashscope.aliyuncs.com/compatible-mode/v1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENTALKING_LLM_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;sk-your-key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENTALKING_LLM_MODEL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;qwen-flash
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENTALKING_STT_DEFAULT_PROVIDER&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;dashscope
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENTALKING_STT_DASHSCOPE_MODEL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;paraformer-realtime-v2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENTALKING_STT_DASHSCOPE_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;sk-your-key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENTALKING_TTS_DASHSCOPE_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;sk-your-key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENTALKING_TTS_DEFAULT_PROVIDER&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;edge
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENTALKING_TTS_EDGE_VOICE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;zh-CN-XiaoxiaoNeural
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Esta configuración parece algo larga, pero deja límites claros: LLM, reconocimiento de voz, síntesis de voz y clonación de voz pueden cambiar de provider por separado, sin atar todas las capacidades a un solo servicio.&lt;/p&gt;
&lt;h2 id=&#34;estructura-de-ingeniería&#34;&gt;Estructura de ingeniería
&lt;/h2&gt;&lt;p&gt;La estructura del código de OpenTalking también refleja su posición. La capa central de orquestación está en &lt;code&gt;opentalking/&lt;/code&gt;, con protocolos, providers, adaptadores de modelos, avatar, voice, media, pipeline y runtime. &lt;code&gt;apps/&lt;/code&gt; contiene el servicio FastAPI, el modo unificado, el frontend React y CLI. &lt;code&gt;configs/&lt;/code&gt; guarda configuración YAML. &lt;code&gt;docker/&lt;/code&gt; y &lt;code&gt;docker-compose.yml&lt;/code&gt; sirven para despliegue en contenedores. &lt;code&gt;scripts/&lt;/code&gt; ofrece arranque unificado y herramientas quickstart. &lt;code&gt;docs/&lt;/code&gt; complementa con documentación de modelos, despliegue y configuración.&lt;/p&gt;
&lt;p&gt;Esta estructura muestra que el proyecto no es un repositorio de un solo modelo. Está separando la cadena de producto de humanos digitales: frontend, backend, inferencia de modelos, voz, assets y runtime, cada uno con sus límites.&lt;/p&gt;
&lt;h2 id=&#34;a-quién-le-conviene-mirarlo&#34;&gt;A quién le conviene mirarlo
&lt;/h2&gt;&lt;p&gt;OpenTalking es interesante si:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Quieres crear un prototipo de conversación en tiempo real con humanos digitales;&lt;/li&gt;
&lt;li&gt;Necesitas conectar LLM, TTS, STT, WebRTC y un modelo de humano digital en una cadena completa;&lt;/li&gt;
&lt;li&gt;Quieres validar primero con Mock y luego reemplazar gradualmente por modelos reales;&lt;/li&gt;
&lt;li&gt;Tienes una GPU de consumo y quieres ejecutar QuickTalk / Wav2Lip / MuseTalk en local;&lt;/li&gt;
&lt;li&gt;Necesitas despliegue privado o inferencia remota multi-GPU, separando inferencia y orquestación Web;&lt;/li&gt;
&lt;li&gt;Quieres usar un WebUI para gestionar personajes, voces, modelos y validación de conversación.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No es ideal para quien solo quiere “generar un video de humano digital con un clic”. OpenTalking es más bien un framework de ingeniería. Para usarlo bien hay que entender pesos de modelos, servicios de audio, backends de inferencia, puertos, variables de entorno y transporte en tiempo real del navegador.&lt;/p&gt;
&lt;h2 id=&#34;conclusión&#34;&gt;Conclusión
&lt;/h2&gt;&lt;p&gt;El valor de OpenTalking está en convertir la conversación en tiempo real con humanos digitales en una cadena de ingeniería que se puede reemplazar y desplegar por etapas. Puedes empezar con &lt;code&gt;mock&lt;/code&gt; y validar solo API, LLM, TTS, STT y WebRTC. También puedes pasar a &lt;code&gt;quicktalk&lt;/code&gt; local para renderizado de video real. En escenarios de mayor calidad o production, puedes mover la inferencia a GPU / NPU remotas mediante OmniRT.&lt;/p&gt;
&lt;p&gt;Si estás trabajando en aplicaciones de humanos digitales, interacción en directo, presentadores virtuales, productos de compañía o validación privada empresarial, OpenTalking merece atención. La barrera no es baja, pero aborda justo la parte de ingeniería que más suele romperse entre un demo y un sistema desplegable.&lt;/p&gt;
&lt;p&gt;Referencias: &lt;a class=&#34;link&#34; href=&#34;https://github.com/datascale-ai/opentalking&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;repositorio GitHub datascale-ai/opentalking&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://datascale-ai.github.io/opentalking/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;sitio de documentación de OpenTalking&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
