fix frontend voice preview fallback

This commit is contained in:
Xin Wang
2026-06-10 12:36:18 +08:00
parent 4a948ee609
commit e94d98e947
3 changed files with 72 additions and 43 deletions

View File

@@ -1790,9 +1790,15 @@ function DebugVoicePanel({
vizStyle: VizStyle;
assistantId: string | null;
}) {
const [micError, setMicError] = useState(false);
const { status, error, localStream, connect, disconnect, audioRef } =
useVoicePreview(assistantId, { onMicError: () => setMicError(true) });
const {
status,
error,
micWarning,
localStream,
connect,
disconnect,
audioRef,
} = useVoicePreview(assistantId);
// 连接中或已连通都视作"会话进行中"
const recording = status === "connecting" || status === "connected";
@@ -1827,15 +1833,10 @@ function DebugVoicePanel({
<div className="relative flex h-[200px] w-[240px] shrink-0 items-center justify-center">
{(() => {
const onVizError = () => {
setMicError(true);
disconnect();
};
const shared = {
active: Boolean(localStream),
stream: localStream,
className: "relative shrink-0",
onError: onVizError,
} as const;
if (vizStyle === "aura")
return <AuraVisualizer {...shared} size={200} />;
@@ -1852,17 +1853,19 @@ function DebugVoicePanel({
{status === "connecting"
? "连接中…"
: status === "connected"
? "我在聆听"
? micWarning
? "仅收听模式"
: "我在聆听"
: "开始一次语音对话"}
</div>
<p className="mx-auto text-xs leading-5 text-muted-foreground">
{micError
? "无法访问麦克风,请检查浏览器权限后重试。"
: status === "failed"
{status === "failed"
? error ||
"连接失败,请确认后端已启动且助手已保存后重试。"
: !assistantId
? "请先保存助手,再开始语音预览。"
: micWarning
? `${micWarning} 可接收助手播报,但无法发送语音。`
: recording
? "直接说话即可。助手会在您停顿后自然回应。"
: "测试语音识别、响应速度与助手的播报效果。"}
@@ -1872,7 +1875,6 @@ function DebugVoicePanel({
<Button
disabled={!assistantId || status === "connecting"}
onClick={() => {
setMicError(false);
if (recording) {
disconnect();
} else {