You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Speech-to-Text V2 chirp_3无法返回临时识别结果咨询

问题解答

1. chirp_3模型是否支持临时识别结果?

是的,chirp_3模型完全支持流式临时结果输出,它是Google Cloud Speech-to-Text V2专为实时交互场景设计的模型之一,开启interimResults=true后,服务端会在音频持续输入过程中返回isFinal=false的临时识别结果。

2. 开启interimResults=true后仅返回最终结果的可能原因

正常配置下不会出现这种情况,但以下场景可能导致该问题:

  • 非流式音频输入:如果代码是一次性将完整音频数据发送给服务端,而非按时间分片(比如每200ms发送一段音频帧),服务端会直接完成全量音频的识别,仅返回最终结果。临时结果的触发依赖持续的流式输入反馈。
  • 测试音频时长过短:若测试用音频仅1-2秒,服务端处理速度快于临时结果生成的触发阈值,会直接返回最终结果。建议使用10秒以上的连续语音测试。
  • 音频发送间隔过长:如果分片发送的间隔超过服务端的超时阈值,服务端会判定输入结束,直接返回最终结果。

验证实例(chirp_3返回isFinal=false的场景)

以下是简化的Java代码片段,模拟流式分片发送LINEAR16格式音频,并接收临时结果:

// 初始化流式识别客户端
SpeechClient speechClient = SpeechClient.create();
StreamingRecognizeRequest firstRequest = StreamingRecognizeRequest.newBuilder()
    .setStreamingConfig(StreamingRecognitionConfig.newBuilder()
        .setConfig(RecognitionConfig.newBuilder()
            .addLanguageCodes("en-US")
            .setModel("chirp_3")
            .setEncoding(RecognitionConfig.AudioEncoding.LINEAR16)
            .setSampleRateHertz(16000)
            .build())
        .setStreamingFeatures(StreamingRecognitionFeatures.newBuilder()
            .setInterimResults(true)
            .build())
        .build())
    .build();

// 开启流式请求
BidiStream<StreamingRecognizeRequest, StreamingRecognizeResponse> bidiStream = speechClient.streamingRecognizeCallable().call();
bidiStream.send(firstRequest);

// 分片发送音频数据(模拟实时输入)
Path audioPath = Paths.get("test_long_audio.wav");
byte[] audioBytes = Files.readAllBytes(audioPath);
int chunkSize = 3200; // 对应16000采样率下200ms的音频数据
for (int i = 0; i < audioBytes.length; i += chunkSize) {
    int end = Math.min(i + chunkSize, audioBytes.length);
    StreamingRecognizeRequest audioRequest = StreamingRecognizeRequest.newBuilder()
        .setAudioContent(ByteString.copyFrom(audioBytes, i, end - i))
        .build();
    bidiStream.send(audioRequest);
    Thread.sleep(200); // 模拟实时输入间隔
}

// 接收并处理响应
for (StreamingRecognizeResponse response : bidiStream) {
    for (StreamingRecognitionResult result : response.getResultsList()) {
        System.out.printf("isFinal: %b, 转录文本: %s%n", result.getIsFinal(), result.getAlternatives(0).getTranscript());
    }
}

运行上述代码后,控制台会输出类似日志:

isFinal: false, 转录文本: Hello
isFinal: false, 转录文本: Hello everyone
isFinal: false, 转录文本: Hello everyone my name
isFinal: true, 转录文本: Hello everyone, my name is Nick.

内容的提问来源于stack exchange,提问作者fz Z

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.02 02:34:51