OnDevice 问题排查和常见问题解答

更改识别语言

使用所选语言的语言包重启服务器。

日志

Speech-to-Text 二进制文件有四种日志记录模式:

  • debug:有助于调试二进制文件的详细日志。例如,服务器响应会在此模式下记录。
  • prod:推荐的生产设置。日志将包含有关二进制文件/构建版本、会话启动、会话结束、警告和错误的信息。
  • warning:日志将仅包含警告或错误。
  • error:日志将仅包含错误。

可以使用 --min_log_level 标志控制日志记录,所有日志会写入 stdout

遇到问题时,请使用调试日志记录运行 Speech-to-Text 服务器:

./speech_to_text_server --host_ip=${STT_IP?} --port=${STT_PORT?}\
  --language_pack=${LANGUAGE_PACK?} --min_log_level="debug" \
  --api_key=${API_KEY?}

启动时,二进制日志

  • build ID:将二进制文件与构建相关联的 ID。
  • Language Pack ID:由服务器加载的语言包的 ID。

转写时,服务器将记录客户端提供的 request ID。在会话结束时,服务器将记录会话状态

日志记录应该足以排查不正确使用导致的问题。它还可以帮助您了解服务器的行为。例如,服务器不会发送任何响应,除非识别音频中的内容。如果音频只是静音或无法识别的声音,则系统不会发送任何响应。

会话状态

成功的会话以正常状态结束。

... Closing StreamingRecognize ($request_id) with status OK

失败的会话以不正常状态结束。例如:如果在初始请求之后发送新的配置请求。

... Closing StreamingRecognize ($request_id) with status INVALID_ARGUMENT: Malordered data received. Expected audio but received config. Send exactly one config, followed by audio data.

录制

ASR 服务器支持记录其交互以帮助 Google 进行调试。

使用场景示例

创建目录以存储录音:

mkdir $PWD/recordings

使用 --recordings 标志启动服务器:

./speech_to_text_server --host_ip=${STT_IP?} --port=${STT_PORT?} \
  --language_pack=${LANGUAGE_PACK?} --min_log_level="debug" \
  --recordings=$PWD/recordings --api_key=${API_KEY?}

使用以下命令启动客户端:

./speech_to_text_client --server_ip=${STT_IP?} --port=${STT_PORT?} \
  --audio=samples/*.wav

这应该生成以下形式的文件

$PWD/recordings/{filename}_{timestamp}_requests.riegeli (1)
$PWD/recordings/{filename}_{timestamp}_responses.riegeli (2)

{filename} 是所记录 .wav 文件的名称。speech_to_text_client 使用 filename 作为 {request_id}。上述第一个示例是包含一系列 StreamingRecognizeRequest 的 Riegeli 文件,第二个是包含一系列 StreamingRecognizeResponse 的 Riegeli 文件。

文件格式

录制内容是 riegeli 文件,其中包含发送到服务器的请求和响应。请求和响应会按照发送到服务器和从服务器发送的顺序流式传输到磁盘。

其他支持

要排查需要支持的问题,例如需要更改代码,请提供(如果适用)

以及问题说明。