Whizi语音模式无法使用:每种报错及解决方法

快速解答

语音模式失败通常出于四个原因之一:账号未登录或语音分钟数已用完、浏览器屏蔽了麦克风、与语音服务的实时连接失败,或者会话触及了自身的某个限制。Whizi显示的提示信息,正好对应其中一种情况。

简短回答

语音模式失败通常出于四个原因之一:账号未登录或语音分钟数已用完、浏览器屏蔽了麦克风、与语音服务的实时连接失败,或者会话触及了自身的某个限制。Whizi显示的提示信息会告诉你是哪一种,每条信息在代码里都对应着唯一一种情况。

在下表里找到你看到的那句话,再阅读下面对应的小节了解详情。

你看到的内容来源该怎么做
Sign in to Whizi to use voice mode.打开语音悬浮层时没有可用的会话令牌登录后重新打开语音模式
Upgrade your subscription to talk with Whizi in voice mode.免费账号尝试开始语音会话订阅套餐:免费账号的语音分钟数为0
Your monthly voice minutes have been used up.本周期的语音预留请求被拒绝等待周期重置,或升级套餐档位
Microphone access is blocked. Allow it in your browser to use voice mode.浏览器拒绝了麦克风请求在浏览器里为whizi.io开启麦克风权限后重试
This browser does not support realtime voice.浏览器没有getUserMediaAudioContext换一个同时支持两者的浏览器
Realtime voice is not configured yet. Please try again later.服务器端未设置语音服务商的密钥你无能为力:稍后重试
The realtime voice connection failed.会话过程中出现websocket错误重试,并检查网络
Voice sessions are limited to 15 minutes. Start a new session to continue.会话计时到达15分钟上限开启新会话

Whizi服务器只负责生成一个短期有效的会话令牌,随后浏览器会直接向语音服务商打开一个websocket连接。音频完全不经过Whizi后端。这就是为什么麦克风故障完全出在你的浏览器本地,而连接部分的提示信息,则来自服务器端的令牌生成环节,或者来自其上游的服务商。

语音无法启动:账号层面的限制

在任何音频被采集之前,会先出现三种拒绝,它们都不是漏洞。

Sign in to Whizi to use voice mode. 当没有可用的令牌时,语音悬浮层会抛出这条信息。未登录或会话已过期的账号都会触发它。登录后重新打开语音模式即可。

Upgrade your subscription to talk with Whizi in voice mode. 这是HTTP 402,代码为subscription_required,在免费账号尝试开始语音会话时返回。免费账号的语音分钟额度是0,没有可以退而求其次的部分权限。带有任何语音额度的最便宜套餐是Starter,价格为$15.99/月,每月包含10分钟实时语音。

Your monthly voice minutes have been used up.Your weekly voice minutes have been used up. 这是HTTP 429,代码为voice_limit_reached,在本周期的语音预留请求被拒绝时抛出。按周计费的套餐显示的名词是"weekly",其他情况显示"monthly",你看到哪一个,就说明你的套餐处在哪种计费周期。

按月计费周期的额度如下:

套餐每月语音分钟数
Free0
Starter10
Pro80
Powerhouse500

按周计费的周期取月度额度的四分之一,并向上取整:Starter为3分钟,Pro为20分钟,Powerhouse为125分钟。

麦克风无法启动

以下四条信息都来自语音模式的浏览器一侧,发生在采集音频之前或过程中。由于音频从不会到达Whizi服务器,你的账号或套餐对它们没有任何影响。

This browser does not support realtime voice.getUserMediaAudioContext不可用时显示。这是能力检测,不是权限问题,所以授予再多权限也无法解决。换一个浏览器试试。

Microphone access is blocked. Allow it in your browser to use voice mode. 当麦克风请求被拒绝,报错为NotAllowedErrorSecurityError时显示。为该站点授予麦克风权限,再重新开始会话。

The microphone could not be started. 这是其他任何麦克风故障的兜底信息。如果权限已授予、浏览器也具备相应能力,这条信息指向的就是设备本身,或者是另一个正占用输入设备的应用程序。

Voice mode could not start. 当启动流程抛出没有自带信息的错误时,会使用这条兜底提示,它本身不携带可供排查的细节。请依次检查权限、浏览器和设备。

连接失败或中断

开始一次会话有两个可能独立失败的步骤:服务器生成令牌,然后浏览器打开一个websocket连接。提示信息会告诉你是哪一步出了问题。

生成令牌阶段的故障:

提示信息状态码与代码触发条件
Realtime voice is not configured yet. Please try again later.503 voice_live_unavailable服务商的API密钥没有在worker上设置
Realtime voice is temporarily rate-limited. Please retry shortly.429 provider_rate_limited上游的令牌生成接口返回了429
Whizi could not start a realtime voice session.502 voice_live_unavailable令牌生成时出现其他任何上游故障
Whizi received an invalid realtime voice token.502 voice_live_unavailable生成成功但没有返回令牌名称
Realtime voice is not available in this build yet.503 voice_not_configured共享API的基础地址缺失,或该构建版本未启用语音功能
Whizi received an invalid realtime voice session.502 invalid_voice_live_response会话数据未通过校验,包括websocket地址不是以预期的服务商域名开头
Request failed ({status}).视情况而定客户端读取不到语音错误正文时的兜底信息

前四行都来自Whizi worker上的令牌生成环节,或者来自其上游的服务商。任何客户端设置、浏览器更改或套餐变更都无法解决它们。请稍后重试,如果同样的提示持续出现,联系客服并附上准确的信息和时间。

websocket本身的故障:

提示信息触发条件
Whizi could not reach the realtime voice service.websocket在建立完成前就关闭了
The realtime voice connection was closed.websocket在建立完成后关闭了
The realtime voice connection failed.触发了一次websocket错误事件

悬浮层会将失败的会话标记为Connection error状态。建立完成前的关闭,指向的是可达性问题(比如某个网络屏蔽了websocket);建立完成后的关闭,指向的是会话中途被打断。

重试本身也有上限。开始或结束一次语音会话,每分钟各限制6次请求,所以疯狂点击开始按钮,只会把你原来的问题换成一个429错误。其他重试会占用的限制窗口,见速率限制

会话自行结束

有四种结束方式是有意为之的,各自对应一条独立的信息。

Voice sessions are limited to 15 minutes. Start a new session to continue. 无论你还剩多少额度,单次语音会话都上限15分钟(900秒)。计时器到达这个最大值时会出现这条信息,开启新会话正是预期的做法。

This session used the last of your plan's voice minutes for this period. 开始通话的请求会预留秒数,并返回这次会话最多能运行多久,当你剩余的分钟数不多时,这个数字会相应缩短。当服务器把会话时长压到15分钟上限以下时,结束时你看到的就是这条信息,而不是上限提示。

Whizi ended the session after a couple of quiet minutes. Tap retry when you want to keep talking. 空闲超时是在没有检测到任何说话的情况下触发的。如果你的症状是"它根本没听到我说话",就该留意这条信息:完全没有捕捉到语音的会话,会以这种方式结束,而不是一直挂着。如果你确实在说话却看到这条信息,问题出在超时机制之前,见上文麦克风部分。

The realtime voice session is ending. Start a new session to continue. 上游服务发送了一个goAway帧,也就是服务商要求这条连接收尾。请开启新会话。

会话令牌的有效期为16分钟,比15分钟的会话上限多留出1分钟的余量。会话不可能比它的令牌活得更久,你最先碰到的永远是那个上限。

自己读懂报错

如果你在看网络请求记录,或者要上报问题,错误正文里的code才是更有用的那一半。语音模式可能产生的代码有:subscription_requiredvoice_limit_reachedvoice_live_unavailableprovider_rate_limitedvoice_not_configuredinvalid_voice_live_responserate_limit_reached

至于你说过的话会被怎么处理,训练说明里明确提到了语音:Whizi不会用你的提示词、文件、对话、语音转写文字或生成内容去训练Whizi自有的AI模型,也不会把这些内容作为训练数据出售。完整细节见Whizi如何处理你的数据

操作清单
  • 免费账号的语音分钟数为0,所以看到402升级提示是正常现象
  • 每月额度:Starter 10分钟,Pro 80分钟,Powerhouse 500分钟
  • 限制提示里出现"weekly",说明账号处于按周计费周期
  • 麦克风相关的错误完全出在浏览器一侧:音频从不经过Whizi服务器
  • This browser does not support realtime voice.意味着缺少getUserMediaAudioContext,授予权限也无法解决
  • 令牌生成失败(503和502)属于服务器端问题:稍后重试或联系客服
  • 无论剩余额度多少,单次会话都上限15分钟
  • 完全没有语音输入的会话,会被空闲超时结束
  • 开始会话的请求限速为每分钟6次,所以疯狂重试反而会适得其反

常见问题

Whizi提示我的麦克风被屏蔽,但它在其他应用里能正常工作,该怎么办?

Microphone access is blocked. Allow it in your browser to use voice mode.这条信息,出现在麦克风请求被拒绝、报错为NotAllowedErrorSecurityError时。为该站点授予麦克风权限,再重新开始会话。如果你看到的是The microphone could not be started.,那问题就不是权限:这条信息是其他任何麦克风故障的兜底提示。

语音模式提示尚未配置,是我的账号问题吗?

不是。Realtime voice is not configured yet. Please try again later.是HTTP 503,在服务器没有设置语音服务商API密钥时返回;Realtime voice is not available in this build yet.是客户端的对应版本,出现在该构建版本未启用语音功能时。这两种情况都不是你这边能解决的。请稍后重试,如果持续出现,带上准确的提示信息联系客服。