实时语音转写服务支持将实时输入的长语音(时长不超过5小时)实时转换为文本,支持输出标点符号,同时可以生成带有时间戳的文本信息。目前支持中文普通话(包括中英文混说)、英语、法语的识别。
实时语音转写服务广泛应用于会议、直播字幕等场景。例如,正在进行中的会议可以将音频内容实时输出为文字,便于记录员实时修改及编辑会议纪要,提高会议效率。另外,在视频直播时,利用此功能将直播中的音频内容实时输出为直播字幕,提升观看体验。
在进行开发之前,您需要完成必要的配置AppGallery Connect,同时请确保您的工程中已经配置HMS Core SDK的Maven仓地址,并且完成了本服务的SDK集成。
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();
// 回调实现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) { // 通知应用状态发生改变。 } }
mSpeechRecognizer.setRealTimeTranscriptionListener(new SpeechRecognitionListener());
mSpeechRecognizer.startRecognizing(config);
if (mSpeechRecognizer!= null) { mSpeechRecognizer.destroy(); }
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); } });