com.alibaba.dashscope.audio.asr.translation.TranslationRecognizerChat Maven / Gradle / Ivy
// Copyright (c) Alibaba, Inc. and its affiliates.
package com.alibaba.dashscope.audio.asr.translation;
import com.alibaba.dashscope.api.SynchronizeFullDuplexApi;
import com.alibaba.dashscope.audio.asr.translation.results.TranslationRecognizerResult;
import com.alibaba.dashscope.common.*;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.protocol.ApiServiceOption;
import com.alibaba.dashscope.protocol.ConnectionOptions;
import com.alibaba.dashscope.protocol.Protocol;
import com.alibaba.dashscope.protocol.StreamingMode;
import io.reactivex.BackpressureStrategy;
import io.reactivex.Emitter;
import io.reactivex.Flowable;
import java.nio.ByteBuffer;
import java.util.LinkedList;
import java.util.Queue;
import java.util.UUID;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;
import lombok.Builder;
import lombok.Getter;
import lombok.NonNull;
import lombok.experimental.SuperBuilder;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public final class TranslationRecognizerChat {
@Getter SynchronizeFullDuplexApi duplexApi;
private ApiServiceOption serviceOption;
private Emitter audioEmitter;
@SuperBuilder
private static class AsyncCmdBuffer {
@Builder.Default private boolean isStop = false;
private ByteBuffer audioFrame;
}
private final Queue cmdBuffer = new LinkedList<>();
private TranslationRecognizerState state = TranslationRecognizerState.IDLE;
private AtomicReference stopLatch = new AtomicReference<>(null);
private long startStreamTimeStamp = -1;
private long firstPackageTimeStamp = -1;
private long stopStreamTimeStamp = -1;
private long onCompleteTimeStamp = -1;
private AtomicBoolean isSentenceEnd = new AtomicBoolean(false);
private AtomicBoolean stopped = new AtomicBoolean(false);
private String preRequestId = null;
@SuperBuilder
private static class TranslationRecognizerParamWithStream extends TranslationRecognizerParam {
@NonNull private Flowable audioStream;
@Override
public Flowable © 2015 - 2025 Weber Informatics LLC | Privacy Policy