heyyyyou

Results 18 comments of heyyyyou

有一点,无法输入音频时候注意检查浏览器是否对网站开放了麦克风权限。 我在尝试数字人说话的同时按照语音内容做自定义动作和表情。目前我能想到的方式是: 1、保持面部不动,这样可以复用原始形象模型,然后其他动作按照要求录制或者调整,然后转为图片帧,这里两个问题:如何保证面部不动的同时改变动作,表情改变了之前的形象模型大该是无法复用会变脸。 2、全部动作和表情都用模型加载为形象模型,然后通过插入中间过渡帧,这样需要简单调一下代码,切换时后也把形象切换过去而不是只是切换图片帧,这里的问题是为了保证流畅全部加载到了内存中,numpy参数化图片帧还会膨胀,整体内存可能会吃不消。 欢迎讨论

From the perspective of real-time digital humans, if your TTS synthesis is slow, shouldn't you solve the TTS problem? Instead of adding buffering, perhaps you can cache the TTS when...

> [@heyyyyou](https://github.com/heyyyyou) any ideas on how to modify lipasr to wait while there is a tts stream running, and not carry on with chunks of silence? regards Through unified state...

You can't solve the silence problem by blocking and waiting, because ASR must maintain continuous frame consumption to maintain the smoothness of the entire real-time processing pipeline. Blocking in the...

The while loop only increments the counter when audio_type != 1, causing it to block indefinitely when encountering consecutive silent frames, violating the fundamental design principles of the LiveTalking audio...

do you know deepwiki?maybe it can help you。i dont have any idea for you

异步事件循环在独立线程运行 你通过 _start_loop_thread 在新线程中跑 asyncio loop,并用 asyncio.run_coroutine_threadsafe 提交协程。这种方式理论上可以并发,但会有跨线程上下文切换(线程切换、队列通信),如果消息量大或每次都新建连接,容易出现延迟。 WebSocket 每次请求新建连接 在 _ws_stream 里,每次 TTS 请求都新建 WebSocket 连接(async with websockets.connect(...) as ws:)。频繁连接与断开会导致显著的延迟,特别是在高并发或网络波动时。官方/高效实现通常会复用连接或引入连接池。 队列通信阻塞 out_q.put_nowait() 和 out_q.put() 用于跨线程传输音频 chunk。如果消费端处理较慢,队列写入会阻塞,导致延迟——比如队列满时,put 会阻塞主线程。

关于问题2,这个前提是需要动作视频制作为avatar,然后自定义动作json或者在原来的data/custom_config.json中自己加,需要自己找到使用的代码basereal.py:287-294,系统提供了HTTP API接口来触发动作切换,位于 app.py:219-239 。这个set_audiotype端点接收POST请求,包含sessionid、audiotype和reinit参数。在帧处理过程中,系统根据当前状态选择相应的动作视频,相关逻辑位于 basereal.py:328-348 。当检测到静音状态且存在自定义视频时,系统会使用对应audiotype的动作序列。 目前是这么理解的,可以探讨下,我目前的困难点在于,脸型和动作视频的不匹配。欢迎交流

> > 关于问题2,这个前提是需要动作视频制作为avatar,然后自定义动作json或者在原来的data/custom_config.json中自己加,需要自己找到使用的代码basereal.py:287-294,系统提供了HTTP API接口来触发动作切换,位于 app.py:219-239 。这个set_audiotype端点接收POST请求,包含sessionid、audiotype和reinit参数。在帧处理过程中,系统根据当前状态选择相应的动作视频,相关逻辑位于 basereal.py:328-348 。当检测到静音状态且存在自定义视频时,系统会使用对应audiotype的动作序列。 目前是这么理解的,可以探讨下,我目前的困难点在于,脸型和动作视频的不匹配。欢迎交流 > > 感谢您的回复。 我目前是想在说话的时候有动作。目前在代码中没看到相关处理。basereal.py:328-348只是在禁音时候的动作,我没有这样的需求。 我也提到 “这个前提是需要动作视频制作为avatar,然后自定义动作json或者在原来的data/custom_config.json中自己加,”这个动作视频也是一个avatar,可以用来驱动说话,就把默认的那个avatar替换掉就可以,这个项目不管你视频内容,只要求正面的面部清晰可识别,所以其他内容都是需要自己提前做,然后按需要切换。目前想要做动作,只能做预制动作,控制面部的同时还要做动作的,目前是需要做骨骼绑定的,但是那又成了3d方向的内容。至少目前开源的数字人还没有看到同时满足 实时性 对口型 做动作的

> > > > 关于问题2,这个前提是需要动作视频制作为avatar,然后自定义动作json或者在原来的data/custom_config.json中自己加,需要自己找到使用的代码basereal.py:287-294,系统提供了HTTP API接口来触发动作切换,位于 app.py:219-239 。这个set_audiotype端点接收POST请求,包含sessionid、audiotype和reinit参数。在帧处理过程中,系统根据当前状态选择相应的动作视频,相关逻辑位于 basereal.py:328-348 。当检测到静音状态且存在自定义视频时,系统会使用对应audiotype的动作序列。 目前是这么理解的,可以探讨下,我目前的困难点在于,脸型和动作视频的不匹配。欢迎交流 > > > > > > > > > 感谢您的回复。 我目前是想在说话的时候有动作。目前在代码中没看到相关处理。basereal.py:328-348只是在禁音时候的动作,我没有这样的需求。 > > > > > > 我也提到 “这个前提是需要动作视频制作为avatar,然后自定义动作json或者在原来的data/custom_config.json中自己加,”这个动作视频也是一个avatar,可以用来驱动说话,就把默认的那个avatar替换掉就可以,这个项目不管你视频内容,只要求正面的面部清晰可识别,所以其他内容都是需要自己提前做,然后按需要切换。目前想要做动作,只能做预制动作,控制面部的同时还要做动作的,目前是需要做骨骼绑定的,但是那又成了3d方向的内容。至少目前开源的数字人还没有看到同时满足...