fix frontend voice preview fallback
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user