feat: add spatialreal avatar plugin#5014
Conversation
3a11a12 to
9136884
Compare
9136884 to
15b4cec
Compare
15b4cec to
840bac3
Compare
840bac3 to
fa328eb
Compare
|
Update, just rebased to resolve uv.lock conflict. No code change. |
|
Hi @tinalenguyen , are there anything I can help / change to make it easier for this patch to be merged? (The conflict is minor, just because of new package and dependency introduction, and can be easily resolved if we are ready to merge this). |
|
Hi @3DRX, thanks for following up and creating the PR! I tested it out and encountered this error: I see that you use ingress/egress for the audio flow, is there a reason why the avatar doesn't publish data directly to the room? It should be faster that way |
Hi @tinalenguyen thanks for the review. The problem you encountered is because Regarding ingress/egress, it's an unfortunate naming collision. The ingress endpoint of spatialreal and egress config field does not mean ingress/egress in livekit. In livekit's context they mean avatar worker (ingesting agent's audio output, and publish audio & avatar animation to the same livekit room). Currently SpatialReal avatar worker will publish data directly to the room, we are using the golang SDK :) |
I think I need to figure out a better way to name/communicate this, to avoid misunderstanding. |
|
@3DRX Thank you for the context, I see now! Typically that logic exists server side so users wouldn't see those ingress/egress endpoints I tested it out and I wasn't able to see the avatar join the room at all, but audio was published. Could you pull from main and bump the versions to see if that helps? Also, is there a reason why |
This PR adds SpatialReal avatar plugin, we've been developing it for a while at https://github.com/spatialwalk/livekit-plugins-spatialreal, and publish packages to https://pypi.org/project/livekit-plugins-spatialreal.
Our example project can be found at https://github.com/spatialwalk/avatarkit-voice-agent-demo/tree/main/livekit-agents. For a deployed demo, please checkout SpatialReal playground, which is built using livekit agents and SpatialReal avatar using this plugin.
This plugin have https://pypi.org/project/avatarkit/ as dependency, which is our python SDK, it's a thin layer that handles websocket connection and protobuf messages.
During this PR I also make changes according to the ai review, I personally tested these changes from the example project with no regressions found.
Another thing I'd like to discuss is pypi package transfer, I think it is good for developers (less confusion) if we can still publish release to the same pypi package afther this plugin gets merged, and we are willing to transfer the ownership of the pypi package to livekit organization. Please let me know what should I do :)
We have early adopters shipping SpatialReal avatar in production using other integration methods for months, and recently we have developers using this plugin in their product for about a week, during the process we've fixed all known issues.