简短回答
语音模式失败通常出于四个原因之一:账号未登录或语音分钟数已用完、浏览器屏蔽了麦克风、与语音服务的实时连接失败,或者会话触及了自身的某个限制。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. | 浏览器没有getUserMedia或AudioContext | 换一个同时支持两者的浏览器 |
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",你看到哪一个,就说明你的套餐处在哪种计费周期。
按月计费周期的额度如下:
| 套餐 | 每月语音分钟数 |
|---|---|
| Free | 0 |
| Starter | 10 |
| Pro | 80 |
| Powerhouse | 500 |
按周计费的周期取月度额度的四分之一,并向上取整:Starter为3分钟,Pro为20分钟,Powerhouse为125分钟。
麦克风无法启动
以下四条信息都来自语音模式的浏览器一侧,发生在采集音频之前或过程中。由于音频从不会到达Whizi服务器,你的账号或套餐对它们没有任何影响。
This browser does not support realtime voice. 当getUserMedia或AudioContext不可用时显示。这是能力检测,不是权限问题,所以授予再多权限也无法解决。换一个浏览器试试。
Microphone access is blocked. Allow it in your browser to use voice mode. 当麦克风请求被拒绝,报错为NotAllowedError或SecurityError时显示。为该站点授予麦克风权限,再重新开始会话。
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_required、voice_limit_reached、voice_live_unavailable、provider_rate_limited、voice_not_configured、invalid_voice_live_response和rate_limit_reached。
至于你说过的话会被怎么处理,训练说明里明确提到了语音:Whizi不会用你的提示词、文件、对话、语音转写文字或生成内容去训练Whizi自有的AI模型,也不会把这些内容作为训练数据出售。完整细节见Whizi如何处理你的数据。
- 免费账号的语音分钟数为0,所以看到402升级提示是正常现象
- 每月额度:Starter 10分钟,Pro 80分钟,Powerhouse 500分钟
- 限制提示里出现"weekly",说明账号处于按周计费周期
- 麦克风相关的错误完全出在浏览器一侧:音频从不经过Whizi服务器
This browser does not support realtime voice.意味着缺少getUserMedia或AudioContext,授予权限也无法解决- 令牌生成失败(503和502)属于服务器端问题:稍后重试或联系客服
- 无论剩余额度多少,单次会话都上限15分钟
- 完全没有语音输入的会话,会被空闲超时结束
- 开始会话的请求限速为每分钟6次,所以疯狂重试反而会适得其反
常见问题
Whizi提示我的麦克风被屏蔽,但它在其他应用里能正常工作,该怎么办?
Microphone access is blocked. Allow it in your browser to use voice mode.这条信息,出现在麦克风请求被拒绝、报错为NotAllowedError或SecurityError时。为该站点授予麦克风权限,再重新开始会话。如果你看到的是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.是客户端的对应版本,出现在该构建版本未启用语音功能时。这两种情况都不是你这边能解决的。请稍后重试,如果持续出现,带上准确的提示信息联系客服。