实时语音转写

服务介绍

实时语音转写服务支持将实时输入的长语音(时长不超过5小时)实时转换为文本,支持输出标点符号,同时可以生成带有时间戳的文本信息。目前支持中文普通话(包括中英文混说)、英语、法语的识别。

应用场景

实时语音转写服务广泛应用于会议、直播字幕等场景。例如,正在进行中的会议可以将音频内容实时输出为文字,便于记录员实时修改及编辑会议纪要,提高会议效率。另外,在视频直播时,利用此功能将直播中的音频内容实时输出为直播字幕,提升观看体验。

注意事项

  • 目前法语实时语音转写服务仅支持华为手机和荣耀手机使用,中英文实时语音转写服务支持所有品牌手机。
  • 实时语音转写服务通过访问云侧接口完成识别服务,调测和使用时需保证设备可正常访问互联网。

开发步骤

在进行开发之前,您需要完成必要的配置AppGallery Connect,同时请确保您的工程中已经配置HMS Core SDK的Maven仓地址,并且完成了本服务的SDK集成

  1. 请参见云端鉴权信息使用须知,设置您应用的鉴权信息。
  2. 创建语音识别器,并设置配置。
    Java
    MLSpeechRealTimeTranscriptionConfig config = new MLSpeechRealTimeTranscriptionConfig.Factory()
        // 设置语言,目前支持中文、英语、法语转写。
        .setLanguage(MLSpeechRealTimeTranscriptionConstants.LAN_ZH_CN)
        // 设置标点。
        .enablePunctuation(true)
        // 设置句子的偏移。
        .enableSentenceTimeOffset(true)
        // 设置词的偏移。
        .enableWordTimeOffset(true)
        
    // 此方法已废弃,请使用新的设置规则,参见设置国家码
        .setRegion(MLSpeechRealTimeTranscriptionConfig.REGION_DR_CHINA)
        .create();
    MLSpeechRealTimeTranscription mSpeechRecognizer = MLSpeechRealTimeTranscription.getInstance();
  3. 创建语音识别结果监听器回调。
    Java
    // 回调实现MLSpeechRealTimeTranscriptionListener接口,实现接口中的方法。
    protected class SpeechRecognitionListener implements MLSpeechRealTimeTranscriptionListener{
        @Override
        public void onStartListening() {
            // 录音器开始接收声音。
        }
    
        @Override
        public void onStartingOfSpeech() {
            // 用户开始讲话,即语音识别器检测到用户开始讲话。
        }
    
        @Override
        public void onVoiceDataReceived(byte[] data, float energy, PacMap bundle) {
            // 返回给用户原始的PCM音频流和音频能量,该接口并非运行在主线程中,返回结果需要在子线程中处理。
        }
    
        @Override
        public void onRecognizingResults(PacMap partialResults) {
            // 从MLSpeechRealTimeTranscription接收到持续语音识别的文本。
        }
    
        @Override
        public void onError(int error, String errorMessage) {
            // 识别发生错误后调用该接口。
        }
    
        @Override
        public void onState(int state,PacMap params) {
            // 通知应用状态发生改变。
        }
    }
  4. 绑定语音识别器。
    Java
    mSpeechRecognizer.setRealTimeTranscriptionListener(new SpeechRecognitionListener());
  5. 调用startRecognizing启动语音识别。
    Java
    mSpeechRecognizer.startRecognizing(config);
  6. 识别完成后,结束识别并释放资源。
    Java
    if (mSpeechRecognizer!= null) {
        mSpeechRecognizer.destroy();
    }
  7. (可选)获取支持的语种列表,在设置region之前调用则采用默认路由。
    Java
    MLSpeechRealTimeTranscription.getInstance()
        .getLanguages(new MLSpeechRealTimeTranscription.LanguageCallback() {
        @Override
        public void onResult(List<String> result) {
             HiLog.info(LABEL,  "support languages==" + result.toString());
        }
     
        @Override
        public void onError(int errorCode, String errorMsg) {
            HiLog.info(LABEL,  " errorCode:" + errorCode + " errorMsg:" + errorMsg);    }
    });
unifiedSearch.search
DOC.searchTips