diff --git a/README.md b/README.md index 61f6ccb..3645a9e 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ [![Website](https://raw.githubusercontent.com/prs-eth/Marigold/main/doc/badges/badge-website.svg)](https://aigc3d.github.io/projects/LAM/) [![Apache License](https://img.shields.io/badge/📃-Apache--2.0-929292)](https://www.apache.org/licenses/LICENSE-2.0) +[![ModelScope](https://img.shields.io/badge/%20ModelScope%20-Space-blue)](https://www.modelscope.cn/studios/Damo_XR_Lab/LAM-A2E) #### This project leverages audio input to generate ARKit blendshapes-driven facial expressions in ⚡real-time⚡, powering ultra-realistic 3D avatars generated by [LAM](https://github.com/aigc3d/LAM). @@ -14,12 +15,14 @@ ## 📢 News +**[April 21, 2025]** We have released the [ModelScope](https://www.modelscope.cn/studios/Damo_XR_Lab/LAM-A2E) Space !
+**[April 21, 2025]** We have released the WebGL Interactive Chatting Avatar SDK on [OpenAvatarChat](https://github.com/HumanAIGC-Engineering/OpenAvatarChat) (including LLM, ASR, TTS, Avatar), with which you can freely chat with our generated 3D Digital Human ! 🔥
### To do list - [ ] Release Huggingface space. -- [ ] Release Modelscope space. +- [x] Release Modelscope space. - [ ] Release the LAM-A2E model based on the Flame expression. -- [ ] Release Interactive Chatting Avatar SDK with [OpenAvatarChat](https://github.com/HumanAIGC-Engineering/OpenAvatarChat), including LLM, ASR, TTS, LAM-Avatars. +- [x] Release Interactive Chatting Avatar SDK with [OpenAvatarChat](https://www.modelscope.cn/studios/Damo_XR_Lab/LAM-A2E), including LLM, ASR, TTS, LAM-Avatars. diff --git a/app_lam_audio2exp.py b/app_lam_audio2exp.py index 1eb9ef4..5acc4a0 100644 --- a/app_lam_audio2exp.py +++ b/app_lam_audio2exp.py @@ -142,9 +142,13 @@ def demo_lam_audio2exp(infer, cfg): cfg.save_json_path = os.path.join("./assets/sample_lam", base_id, 'arkitWithBSData', 'bsData.json') infer.infer() - create_zip_archive(output_zip='./assets/arkitWithBSData.zip', base_dir=os.path.join("./assets/sample_lam", base_id)) + output_file_name = base_id+'_'+os.path.basename(audio_params).split(".")[0]+'.zip' + assetPrefix = 'gradio_api/file=assets/' + output_file_path = os.path.join('./assets',output_file_name) - return 'gradio_api/file='+audio_params + create_zip_archive(output_zip=output_file_path, base_dir=os.path.join("./assets/sample_lam", base_id)) + + return 'gradio_api/file='+audio_params, assetPrefix+output_file_name with gr.Blocks(analytics_enabled=False) as demo: logo_url = './assets/images/logo.jpeg' @@ -158,7 +162,7 @@ def demo_lam_audio2exp(infer, cfg): """) gr.HTML( - """

Notes: This project leverages audio input to generate ARKit blendshapes-driven facial expressions in ⚡real-time⚡, powering ultra-realistic 3D avatars generated by LAM.

""" + """

Notes: This project leverages audio input to generate ARKit blendshapes-driven facial expressions in ⚡real-time⚡, powering ultra-realistic 3D avatars generated by LAM.

""" ) # DISPLAY @@ -224,12 +228,12 @@ def demo_lam_audio2exp(infer, cfg): if h5_rendering: gr.set_static_paths(Path.cwd().absolute() / "assets/") - assetPrefix = 'gradio_api/file=assets/' with gr.Row(): - gs = gaussian_render(width=380, height=680, assets=assetPrefix + 'arkitWithBSData.zip') + gs = gaussian_render(width=380, height=680) working_dir = gr.State() selected_audio = gr.Textbox(visible=False) + selected_render_file = gr.Textbox(visible=False) submit.click( fn=assert_input_image, @@ -243,7 +247,7 @@ def demo_lam_audio2exp(infer, cfg): fn=core_fn, inputs=[input_image, audio_input, working_dir], - outputs=[selected_audio], + outputs=[selected_audio, selected_render_file], queue=False, ).success( fn=audio_loading, @@ -251,7 +255,8 @@ def demo_lam_audio2exp(infer, cfg): js='''(output_component) => window.loadAudio(output_component)''' ).success( fn=do_render(), - js='''() => window.start()''' + outputs=[selected_render_file], + js='''(selected_render_file) => window.start(selected_render_file)''' ) demo.queue() diff --git a/scripts/install/install_cu118.sh b/scripts/install/install_cu118.sh index 0a16bc9..c3cbc44 100644 --- a/scripts/install/install_cu118.sh +++ b/scripts/install/install_cu118.sh @@ -6,4 +6,4 @@ pip install torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 --index-url https pip install -r requirements.txt # install H5-render -pip install wheels/gradio_gaussian_render-0.0.2-py3-none-any.whl \ No newline at end of file +pip install wheels/gradio_gaussian_render-0.0.3-py3-none-any.whl \ No newline at end of file diff --git a/scripts/install/install_cu121.sh b/scripts/install/install_cu121.sh index 7c39e52..66a0f2c 100644 --- a/scripts/install/install_cu121.sh +++ b/scripts/install/install_cu121.sh @@ -6,4 +6,4 @@ pip install torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 --index-url https pip install -r requirements.txt # install H5-render -pip install wheels/gradio_gaussian_render-0.0.2-py3-none-any.whl \ No newline at end of file +pip install wheels/gradio_gaussian_render-0.0.3-py3-none-any.whl \ No newline at end of file diff --git a/wheels/gradio_gaussian_render-0.0.2-py3-none-any.whl b/wheels/gradio_gaussian_render-0.0.3-py3-none-any.whl similarity index 69% rename from wheels/gradio_gaussian_render-0.0.2-py3-none-any.whl rename to wheels/gradio_gaussian_render-0.0.3-py3-none-any.whl index 4b3fec6..739925e 100644 Binary files a/wheels/gradio_gaussian_render-0.0.2-py3-none-any.whl and b/wheels/gradio_gaussian_render-0.0.3-py3-none-any.whl differ