信息爆发时代,有效率有质量地整理视频、音频、文字等信息变得尤为重要。会议、讲座、采访、客服电话等场景均需要形成完整的文字记录材料,音视频文件也要配有字幕。语音转文字的智能化,让信息录入即时高效。
在直播类、会议类、笔记类的应用中都具备实时语音转写功能。例如,在音视频会议中,可以将发言内容可视化,即时生成会议纪要,方便记录、修改,提高会议效率;在直播类应用中,可以识别主播所说的话,达到“边说边出文字”的效果,提升用户观看体验,营造更好的直播氛围;在笔记类应用中,支持重点内容随讲随记,捕捉你的每一个想法。
HMS Core机器学习服务提供实时语音转写能力,让开发者在应用中构建长语音转文字功能。可以将会议记录、笔记、总结、音视频直播内容等音频流实时转换为文字流数据结果,实现即时对语音内容的识别,展现对应文字内容。
可支持连续5小时的实时长语音输入转换为文本,不仅能够输出标点符号,同时可以生成带有时间戳的文本信息。不管你是中文普通话、英语、法语,甚至中英文混说都能够很好识别,满足不同的场景需要。
实时语音转写部署情况
效果展示
在效果展示里我们可以看到通过实时语音转写功能转成的文字在结束后可以即刻进行编辑、复制、修改等,十分方便。
注意事项
• 目前法语实时语音转写服务仅支持华为手机和荣耀手机使用,中英文实时语音转写服务支持所有品牌手机。
• 实时语音转写服务通过访问云侧接口完成识别服务,调测和使用时需保证设备可正常访问互联网。
开发步骤
1 .在AppGallery Connect中配置相关信息。
在开发应用前,需要在AppGallery Connect中配置相关信息。
具体开发准备可以参考文档
2 .配置HMS Core SDK的Maven仓地址。
2.1 打开Android Studio项目级“build.gradle”文件。
2.2 添加HUAWEI agcp插件以及Maven代码库。
在allprojects->repositories里面配置HMS Core SDK的Maven仓地址。
allprojects {
repositories {
google()
jcenter()
maven {url 'https://developer.huawei.com/repo/'}
}
}
在buildscript->repositories里面配置HMS Core SDK的Maven仓地址。
buildscript {
repositories {
google()
jcenter()
maven {url 'https://developer.huawei.com/repo/'}
}
}
在buildscript ->dependencies里面增加配置。
buildscript{
dependencies {
classpath 'com.huawei.agconnect:agcp:1.3.1.300'
}
}
3 .创建语音识别器,并设置配置。
MLSpeechRealTimeTranscriptionConfig config = new MLSpeechRealTimeTranscriptionConfig.Factory()
// 设置语言,目前支持中文、英语、法语转写。
.setLanguage(MLSpeechRealTimeTranscriptionConstants.LAN_ZH_CN)
// 设置标点。
.enablePunctuation(true)
// 设置句子的偏移。
.enableSentenceTimeOffset(true)
// 设置词的偏移。
.enableWordTimeOffset(true)
.create();
MLSpeechRealTimeTranscription mSpeechRecognizer = MLSpeechRealTimeTranscription.getInstance();
4. 创建语音识别结果监听器回调。
// 回调实现MLSpeechRealTimeTranscriptionListener接口,实现接口中的方法。
Protected class SpeechRecognitionListener implements MLSpeechRealTimeTranscriptionListener{
@Override
public void onStartListening() {
// 录音器开始接收声音。
}
@Override
public void onStartingOfSpeech() {
// 用户开始讲话,即语音识别器检测到用户开始讲话。
}
@Override
public void onVoiceDataReceived(byte[] data, float energy, Bundle bundle) {
// 返回给用户原始的PCM音频流和音频能量,该接口并非运行在主线程中,返回结果需要在子线程中处理。
}
@Override
public void onRecognizingResults(Bundle partialResults) {
// 从MLSpeechRealTimeTranscription接收到持续语音识别的文本。
}
@Override
public void onError(int error, String errorMessage) {
// 识别发生错误后调用该接口。
}
@Override
public void onState(int state,Bundle params) {
// 通知应用状态发生改变。
}
}
5. 绑定语音识别器。
mSpeechRecognizer.setRealTimeTranscriptionListener(new SpeechRecognitionListener());
6 .调用startRecognizing启动语音识别。
mSpeechRecognizer.startRecognizing(config);
7. 识别完成后,结束识别并释放资源。
if (mSpeechRecognizer!= null) {
mSpeechRecognizer.destroy();
}