17. 翻译功能接口

public interface ITranslationOp {

     /**
      * 是否初始化成功
      *
      * @return boolean 结果
      */
     boolean isInit();

     /**
      * 是否支持【翻译】功能
      *
      * @return boolean 结果
      */
     boolean isSupportTranslation();

     /**
      * 是否使用【A2DP播报】功能
      *
      * @return boolean 结果
      */
     boolean isUseA2DPPlay();

     /**
      * 是否支持【通话翻译+立体声】功能
      *
      * @return boolean 结果
      */
     boolean isSupportCallTranslationWithStereo();

     /**
      * 是否处于工作模式
      *
      * @return boolean 结果
      */
     boolean isWorking();

     /**
      * 获取操作设备对象
      *
      * @return BluetoothDevice 操作设备对象
      */
     BluetoothDevice getDevice();

     /**
      * 缓存的模式信息
      *
      * @return TranslationMode 翻译模式信息
      */
     TranslationMode getTranslationMode();

     /**
      * 添加翻译功能回调
      *
      * @param callback TranslationCallback 翻译功能回调
      */
     void addTranslationCallback(TranslationCallback callback);

     /**
      * 移除翻译功能回调
      *
      * @param callback TranslationCallback 翻译功能回调
      */
     void removeTranslationCallback(TranslationCallback callback);

     /**
      * 请求翻译模式信息
      *
      * @param callback OnRcspActionCallback<TranslationMode> 结果回调
      */
     void requestTranslationMode(OnRcspActionCallback<TranslationMode> callback);

     /**
      * 进入翻译模式
      *
      * @param mode     TranslationMode 翻译模式信息
      * @param callback TranslationCallback 翻译功能回调
      */
     void enterMode(@NonNull TranslationMode mode, @NonNull TranslationCallback callback);

     /**
      * 退出翻译模式
      *
      * @param callback OnRcspActionCallback<Integer> 结果回调
      */
     void exitMode(OnRcspActionCallback<Integer> callback);

     /**
      * 写入音频数据
      *
      * @param audioData AudioData 音频数据
      * @param callback OnRcspActionCallback<Boolean> 结果回调
      */
     void writeAudioData(AudioData audioData, OnRcspActionCallback<Boolean> callback);

     /**
      * 释放资源
      */
     void destroy();
 }

17.1. TranslationCallback

public interface TranslationCallback {

    /**
     * 回调模式变换信息
     *
     * @param device BluetoothDevice 操作设备
     * @param mode   TranslationMode 翻译模式信息
     */
    void onModeChange(@NonNull BluetoothDevice device, @NonNull TranslationMode mode);

    /**
     * 回调接收到的音频数据
     *
     * @param device    BluetoothDevice 操作设备
     * @param audioData AudioData 音频数据
     */
    void onReceiveAudioData(@NonNull BluetoothDevice device, @NonNull AudioData audioData);

    /**
     * 回调翻译错误
     *
     * @param device  BluetoothDevice 操作设备
     * @param code    int 错误码
     * @param message String 错误描述
     */
    void onError(BluetoothDevice device, int code, String message);
}

17.2. IAITranslationApi

public interface IAITranslationApi {

    /**
     * 是否正在翻译
     *
     * @return boolean 结果
     */
    boolean isWorking();

    /**
     * 开始翻译
     *
     * @param mode     TranslationMode 翻译模式信息
     * @param callback AITranslationCallback 云翻译事件回调
     */
    void startTranslating(@NonNull TranslationMode mode, @NonNull AITranslationCallback callback);

    /**
     * 结束翻译
     */
    void stopTranslating();

    /**
     * 写入音频数据
     *
     * @param audioData AudioData 音频数据
     */
    void writeAudio(@NonNull AudioData audioData);

}

17.3. AITranslationCallback

public interface AITranslationCallback {

    /**
     * 回调翻译开始
     */
    void onStart();

    /**
     * 回调翻译结果
     * <p>
     * 可以多次回调
     * </p>
     *
     * @param result TranslateResult 翻译结果
     */
    void onTranslateResult(@NonNull TranslationResult result);

    /**
     * 回调翻译失败
     *
     * @param id      long 翻译任务ID
     * @param code    int 错误码
     * @param message String 错误描述
     */
    void onTranslateError(long id, int code, String message);

    /**
     * 回调翻译结束
     *
     * @param reason  int 结束原因码
     * @param message String 描述
     */
    void onStop(int reason, String message);
}

17.4. TranslationResult

翻译结果

public class TranslationResult implements Parcelable {
    /**
     * 翻译任务序号
     */
    private long id = 0L;
    /**
     * 语音识别文本
     */
    @NonNull
    private String nlpText = "";
    /**
     * 原始语言
     * <p>
     * 遵循ISO-6393标准,小写字母,3字节<br/>
     * 默认是<b>zho</b>, 中文
     * </p>
     */
    @NonNull
    private String srcLanguage = "zho";
    /**
     * 目标语言
     * <p>
     * 遵循ISO-6393标准,小写字母,3字节<br/>
     * 默认是<b>eng</b>,英语
     * </p>
     */
    @NonNull
    private String destLanguage = "eng";
    /**
     * 翻译文本
     */
    @NonNull
    private String translationText = "";
    /**
     * 合成音频的声道数
     * <p>
     * 默认是单声道
     * </p>
     */
    private int channel = 1;
    /**
     * 合成音频的采样率
     * <p>
     * 单位: Hz<br/>
     * 默认是16KHz
     * </p>
     */
    private int sampleRate = 16000;
    /**
     * 编码格式
     * <p>
     * 默认是PCM_16Bit格式
     * </p>
     */
    private int format = 2;
    /**
     * 翻译合成音频的编码数据
     * <p>
     * 注意: 需要转码成对应的编码数据
     * </p>
     */
    private AudioData translationTTSData;
}

Note

  1. AudioData