mirror of
https://github.com/HumanAIGC-Engineering/gradio-webrtc.git
synced 2026-02-04 09:29:23 +08:00
本次代码评审新增并完善了gs视频聊天功能,包括前后端接口定义、状态管理及UI组件实现,并引入了新的依赖库以支持更多互动特性。 Link: https://code.alibaba-inc.com/xr-paas/gradio_webrtc/codereview/21273476 * 更新python 部分 * 合并videochat前端部分 * Merge branch 'feature/update-fastrtc-0.0.19' of http://gitlab.alibaba-inc.com/xr-paas/gradio_webrtc into feature/update-fastrtc-0.0.19 * 替换audiowave * 导入路径修改 * 合并websocket mode逻辑 * feat: gaussian avatar chat * 增加其他渲染的入参 * feat: ws连接和使用 * Merge branch 'feature/update-fastrtc-0.0.19' of http://gitlab.alibaba-inc.com/xr-paas/gradio_webrtc into feature/update-fastrtc-0.0.19 * 右边距离超出容器宽度,则向左移动 * 配置传递 * Merge branch 'feature/update-fastrtc-0.0.19' of gitlab.alibaba-inc.com:xr-paas/gradio_webrtc into feature/update-fastrtc-0.0.19 * 高斯包异常 * 同步webrtc_utils * 更新webrtc_utils * 兼容on_chat_datachannel * 修复设备名称列表没有正常显示的问题 * copy 传递 webrtc_id * Merge branch 'feature/update-fastrtc-0.0.19' of gitlab.alibaba-inc.com:xr-paas/gradio_webrtc into feature/update-fastrtc-0.0.19 * 保证webrtc 完成后再进行websocket连接 * feat: 音频表情数据接入 * dist 上传 * canvas 隐藏 * feat: 高斯文件下载进度透出 * Merge branch 'feature/update-fastrtc-0.0.19' of http://gitlab.alibaba-inc.com/xr-paas/gradio_webrtc into feature/update-fastrtc-0.0.19 * 修改无法获取权限问题 * Merge branch 'feature/update-fastrtc-0.0.19' of gitlab.alibaba-inc.com:xr-paas/gradio_webrtc into feature/update-fastrtc-0.0.19 * 先获取权限再获取设备 * fix: gs资源下载完成前不处理ws数据 * fix: merge * 话术调整 * Merge branch 'feature/update-fastrtc-0.0.19' of gitlab.alibaba-inc.com:xr-paas/gradio_webrtc into feature/update-fastrtc-0.0.19 * 修复设备切换后重新对话,又切换回默认设备的问题 * Merge branch 'feature/update-fastrtc-0.0.19' of http://gitlab.alibaba-inc.com/xr-paas/gradio_webrtc into feature/update-fastrtc-0.0.19 * 更新localvideo 尺寸 * Merge branch 'feature/update-fastrtc-0.0.19' of gitlab.alibaba-inc.com:xr-paas/gradio_webrtc into feature/update-fastrtc-0.0.19 * 不能默认default * 修改音频权限问题 * 更新打包结果 * fix: 对话按钮状态跟gs资源挂钩,删除无用代码 * fix: merge * feat: gs渲染模块从npm包引入 * fix * 新增对话记录 * Merge branch 'feature/update-fastrtc-0.0.19' of http://gitlab.alibaba-inc.com/xr-paas/gradio_webrtc into feature/update-fastrtc-0.0.19 * 样式修改 * 更新包 * fix: gs数字人初始化位置和静音 * 对话记录滚到底部 * 至少100%高度 * Merge branch 'feature/update-fastrtc-0.0.19' of gitlab.alibaba-inc.com:xr-paas/gradio_webrtc into feature/update-fastrtc-0.0.19 * 略微上移文本框 * 开始连接时清空对话记录 * fix: update gs render npm * Merge branch 'feature/update-fastrtc-0.0.19' of http://gitlab.alibaba-inc.com/xr-paas/gradio_webrtc into feature/update-fastrtc-0.0.19 * 逻辑保证 * Merge branch 'feature/update-fastrtc-0.0.19' of gitlab.alibaba-inc.com:xr-paas/gradio_webrtc into feature/update-fastrtc-0.0.19 * feat: 音频初始化配置是否静音 * actionsbar在有字幕时调整位置 * Merge branch 'feature/update-fastrtc-0.0.19' of http://gitlab.alibaba-inc.com/xr-paas/gradio_webrtc into feature/update-fastrtc-0.0.19 * 样式优化 * feat: 增加readme * fix: 资源图片 * fix: docs * fix: update gs render sdk * fix: gs模式下画面位置计算 * fix: update readme * 设备判断,太窄处理 * Merge branch 'feature/update-fastrtc-0.0.19' of gitlab.alibaba-inc.com:xr-paas/gradio_webrtc into feature/update-fastrtc-0.0.19 * 是否有权限和是否有设备分开 * feat: gs 下载和加载钩子函数分离 * Merge branch 'feature/update-fastrtc-0.0.19' of http://gitlab.alibaba-inc.com/xr-paas/gradio_webrtc into feature/update-fastrtc-0.0.19 * fix: update gs render sdk * 替换 * dist * 上传文件 * del
106 lines
2.5 KiB
Svelte
106 lines
2.5 KiB
Svelte
<script lang="ts">
|
|
import { Spinner } from "@gradio/icons";
|
|
import AudioWave from "./AudioWave.svelte";
|
|
import { createEventDispatcher } from 'svelte';
|
|
|
|
const dispatch = createEventDispatcher();
|
|
|
|
export let stream_state;
|
|
export let onStartChat
|
|
export let audio_source_callback
|
|
export let wave_color
|
|
export let assetLoaded = true
|
|
</script>
|
|
|
|
<div class="player-controls">
|
|
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
<!-- svelte-ignore a11y-no-static-element-interactions -->
|
|
<div
|
|
class="chat-btn"
|
|
class:start-chat={stream_state === "closed"}
|
|
class:stop-chat={stream_state === "open" && assetLoaded === true}
|
|
on:click={onStartChat}
|
|
>
|
|
{#if stream_state === "closed"}
|
|
<span>点击开始对话</span>
|
|
{:else if stream_state === "waiting" || assetLoaded === false}
|
|
<div class="waiting-icon-text">
|
|
<div class="icon" title="spinner">
|
|
<Spinner />
|
|
</div>
|
|
<span>等待中</span>
|
|
</div>
|
|
{:else}
|
|
<div class="stop-chat-inner"></div>
|
|
{/if}
|
|
</div>
|
|
{#if stream_state === "open" && assetLoaded === true}
|
|
<div class="input-audio-wave">
|
|
<AudioWave {audio_source_callback} {stream_state} {wave_color} />
|
|
</div>
|
|
{/if}
|
|
</div>
|
|
|
|
<style lang="less">
|
|
.player-controls {
|
|
height: 15%;
|
|
position: relative;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
min-height: 84px;
|
|
|
|
.chat-btn {
|
|
height: 64px;
|
|
width: 296px;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
border-radius: 999px;
|
|
opacity: 1;
|
|
background: linear-gradient(180deg, #7873f6 0%, #524de1 100%);
|
|
transition: all 0.3s;
|
|
z-index: 2;
|
|
cursor: pointer;
|
|
}
|
|
.start-chat {
|
|
font-size: 16px;
|
|
font-weight: 500;
|
|
text-align: center;
|
|
color: #ffffff;
|
|
}
|
|
.waiting-icon-text {
|
|
width: 80px;
|
|
align-items: center;
|
|
font-size: 16px;
|
|
font-weight: 500;
|
|
color: #ffffff;
|
|
margin: 0 var(--spacing-sm);
|
|
display: flex;
|
|
justify-content: space-evenly;
|
|
gap: var(--size-1);
|
|
.icon {
|
|
width: 25px;
|
|
height: 25px;
|
|
fill: #ffffff;
|
|
stroke: #ffffff;
|
|
color: #ffffff;
|
|
}
|
|
}
|
|
|
|
.stop-chat {
|
|
width: 64px;
|
|
.stop-chat-inner {
|
|
width: 25px;
|
|
height: 25px;
|
|
border-radius: 6.25px;
|
|
background: #fafafa;
|
|
}
|
|
}
|
|
|
|
.input-audio-wave {
|
|
position: absolute;
|
|
}
|
|
}
|
|
</style>
|