草庐IT

HMS Core机器学习服务实现同声传译,支持中英文互译和多种音色语音播报

HMS Core 2023-03-28 原文

当用户有跨语种交流或音频内容翻译的需求时,应用需要能自动检测语音内容再输出为用户需要的语言文字。

HMS Core机器学习服务提供同声传译能力,同声传译实现将实时输入的长语音实时翻译为不同语种的文本以及语音,并实时输出原语音文本、翻译后的文本以及翻译文本的语音播报。

在直播类,会议类的应用中,同声传译显得尤为重要。比如,在会议类应用中,可以将正在进行的会议发言人的发言内容实时输出为目标语言文字,便于不同语言的人实时理解会议内容,提高会议效率。在直播类应用中,可以将主播的说话内容实时输出为用户需要的语言文字,再进行实时播报,提高了用户的观看体验。

HMS Core机器学习服务同声传译能力不仅支持连续5小时的实时长语音输入转换为文本,还支持中英文互译和多种音色语音播报,满足不同类型应用中不同场景的需要。

DEMO示例

开发步骤

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

SDK示例代码如下:

dependencies{
    // 引入同声传译服务SDK
implementation 'com.huawei.hms:ml-computer-si-sdk:3.5.0.312'
}
  1. 请参见云端鉴权信息使用须知,设置您应用的鉴权信息。

  2. 创建同传识别器,并设置配置。

MLSimultaneousInterpretationConfig config = new 
MLSimultaneousInterpretationConfig.Factory()
                // 设置源语种,目前支持中文和英文
.setSourceLanguage(MLSimultaneousInterpretationConstants.LAN_ZH_CN)
                // 设置目标语种,目前支持中文和英文
                .setTargetLanguage(MLSimultaneousInterpretationConstants.LAN_EN_US)
                // 设置识别类型。支持原始文本+翻译文本+翻译语音
                .setResultType(MLSimultaneousInterpretationConstants.RESULT_TYPE_TEXT_TRANSLATED_VOICE)
                // 设置发音人,支持中、英男声和女声
                .setPerson(MLSimultaneousInterpretationConstants.EN_FEMALE_VOICE)
                .create();
 MLSimultaneousInterpretationRecognizer = MLSimultaneousInterpretationRecognizer.getInstance();
  1. 创建语音识别结果监听器回调。
// 回调实现MLSimultaneousInterpretationListener,实现接口中的方法。
    protected class SIRecognitionListener implements MLSimultaneousInterpretationListener {
        @Override
        public void onStartListening() {
            // 录音器开始接收声音。
 }
        @Override
        public void onVoiceDataReceived(byte[] data) {
            // 返回给用户原始的PCM音频流和音频能量,该接口并非运行在主线程中,返回结果需要在子线程中处理。
        }
        @Override
        public void onRecognizingResults(Bundle partialResults) {
            // 从SIRecognitionListener接收到持续语音识别的文本。
            // RESULTS_RECOGNIZING:原始文本;RESULTS_TRANS_RECOGNIZING:tts文本;RESULTS_SN:原始序列号;RESULTS_TRANS_SN:tts序列号
        }
        @Override
        public void onResults(Bundle results) {
            // 从SIRecognitionListener接收到完整的句子
            // RESULTS_RECOGNIZED:原始结果;RESULTS_TRANS_RECOGNIZED:tts结果
        }
        @Override
        public void onError(int error, String errorMessage) {
            // 识别发生错误后调用该接口。
        }
        @Override
        public void onState(int state, Bundle params) {
            // 通知应用状态发生改变。
        }
    }
  1. 绑定同传识别器。
mlSimultaneousInterpretationRecognizer.setMLSimultaneousInterpretationListener(new SIRecognitionListener());
  1. 调用startRecognizing启动语音识别。
// 开始识别。 
 mlSimultaneousInterpretationRecognizer.startRecognizing(config);
  1. 识别完成后,结束识别并释放资源。
if (mlSimultaneousInterpretationRecognizer!= null) {
  mlSimultaneousInterpretationRecognizer.destroy();
  }

了解更多详情>>

访问华为开发者联盟官网
获取开发指导文档
华为移动服务开源仓库地址:GitHubGitee

关注我们,第一时间了解 HMS Core 最新技术资讯~

有关HMS Core机器学习服务实现同声传译,支持中英文互译和多种音色语音播报的更多相关文章

  1. ruby - 正则表达式将非英文字母匹配为非单词字符 - 2

    @raw_array[i]=~/[\W]/非常简单的正则表达式。当我用一些非拉丁字母(具体来说是俄语)尝试时,条件是错误的。我能用它做什么? 最佳答案 @raw_array[i]=~/[\p{L}]/使用西里尔字符进行测试。引用:http://www.regular-expressions.info/unicode.html#prop 关于ruby-正则表达式将非英文字母匹配为非单词字符,我们在StackOverflow上找到一个类似的问题: https://

  2. ruby - Ruby Hacking Guide 有英文版吗? - 2

    据我所知,RubyHackingGuide的完整英文翻译不存在。鉴于它最初是在2004中编写的,我觉得这令人难以置信。当然也做了一些尝试:RubyForgeproject表面上是最官方的,但即使粗略地浏览一下mailinglistarchives显示ithaslowtraffic和ismoreorlessdead.C.E.Thornton还尝试翻译它,称他的版本为IntegratedRubyHacker'sGuide.虽然内容丰富,但也不完整:“蓝色”章节是机器翻译的。Thissite提供了我能找到的最详尽的背景。我的问题如下。有谁知道RubyHackingGuide是否还有其他重要的

  3. ruby-on-rails - 如何从字符串中提取包含非英文字符的 URL? - 2

    这是一个简单的脚本,它采用其中包含德语URL的anchor标记,并提取URL:#encoding:utf-8require'uri'url=URI.extract('München')putsurlhttp://www.example.com/wp-content/uploads/2012/01/Mextract方法在ü处停止。我怎样才能让它与非英文字母一起使用?我正在使用ruby​​-1.9.3-p0。 最佳答案 Ruby的内置URI在某些方面很有用,但在处理国际字符或IDNA地址时,它并不是最佳选择。为此,我建议使用Addres

  4. ruby-on-rails - 在 Rails 中,用英文显示两个日期之间的时间 - 2

    在Rails项目中,我想找出两个日期之间的差异,然后以自然语言显示它。有点像>>(date1-date2).to_natural_language"3years,2months,1week,6days"基本上this对于ruby。Google和RailsAPI没有发现任何东西。我发现有些东西可以让你在一个单位上有所不同(即,两个日期之间有多少周),但不能准确地计算年、月、周、天。 最佳答案 Rails的ActionView模块包括两个可以满足您要求的方法:distance_of_time_in_wordsdistance_of_ti

  5. 如何用subtitle edit 将英文字幕转换成中文字幕 - 2

    如何下载Subtitleedit和英文字幕转成中文字幕SubtitleEdit是一个免费、中文化、使用方便、功能强大的影片字幕制作、同步、翻译与修改软件。这个软件内建影片即时预览功能,可以汇入与辨识字幕,支持SubRib、MicroDVD、AdvancedSubStationAlpha、SubStationAlpha、D-Cinema、SAMI、YouTube和sbv等170多种不同字幕格式之间的转换。一,下载首先如何下载subtitleedit给出链接(点击即可进入)(在这里没有用到视频,所以不太需要)前往VLC官网下载VLC播放器[VLC:官方网站-全平台的自由多媒体解决方案!-Video

  6. javascript - 语音合成 API 在说话时突出显示单词 - 2

    目前,我正在制作一个简单的应用程序,其中使用语音合成API来朗读文本。我想在说话时突出显示单词(粗体)。我目前有一个非常基本的实现,使用'onboundary'事件来执行此操作。但是,我想知道是否有更好/更好的方法,因为我的实现是基于一些假设。varwords;varwordIdx;vartext;varutterance=newSpeechSynthesisUtterance();utterance.lang='en-UK';utterance.rate=1;window.onload=function(){document.getElementById('textarea').in

  7. javascript - Annyang语音识别问题 - 2

    我目前正在尝试创建自己的J.A.R.V.I.S系统作为网络应用程序。所以当然,就像任何好的J.A.R.V.I.S系统一样,它需要良好的语音识别。我进行了研究,试图找到一个我可以根据需要自定义的JavaScript语音识别API,并决定使用Annyang。(很简单,效果很好)我花了一些时间试用它,就在我认为它可以正常工作时,我遇到了一个问题。当我尝试在本地查看该文件时它不起作用,所以我将它与MAMP一起托管在我的计算机上以查看它是否有效。它出现了一个对话框,上面写着“本地主机想要访问麦克风”,但是当我点击允许时,它又出现了。它不断出现并且不会消失,直到我单击拒绝。我正在使用以下代码:if

  8. javascript - 使用javascript,我如何计算亚洲字符和英文单词的混合 - 2

    我需要取一串混合的亚洲字符(目前,假设只有中文汉字或日文汉字/平假名/片假名)和“字母​​数字”(即英语、法语),并按以下方式计算:1)将每个亚洲字符计为1;2)将每个字母数字WORD计为1;几个例子:株式会社myCompany=4chars+1word=5total株式会社マイコ=7个字符到目前为止我唯一的想法是使用:varwordArray=val.split(/\w+/);然后检查每个元素以查看其内容是否为字母数字(因此算作1)或不是(因此采用数组长度)。但我觉得这根本不是很聪明,而且正在计算的文本可能多达10,000字,所以速度不是很快。想法? 最佳

  9. javascript - 如何近似Java的Character.isLetterOrDigit()来识别Javascript中的非英文字母、数字? - 2

    在Javascript中,是否有一种方法(在国际化后仍然存在)来确定字符是字母还是数字?这将正确地将Ä、ç识别为字母和非英语数字(我不打算将其作为示例查找)!在Java中,Character类有一些静态方法.isLetter()、.isDigit()、.isLetterOrDigit(),用于以国际通用的方式确定字符实际上是字母还是数字。这比像这样的代码要好//thisisnotright,butcommonandeasyif((ch>='A'&&ch='a'&&ch因为它会拾取非英文字母。我认为C#具有类似的功能...当然,在最坏的情况下,我可以将字符串发送回服务器进行检查,但这很痛

  10. javascript - 正则表达式验证器不允许\w 使用非英文字符 - 2

    我的页面中有电子邮件字段,我正在使用我的asp.net提供的正则表达式验证器对其进行验证。我使用与电子邮件验证器相同的验证表达式,即ValidationExpression="\w+([-+.']\w+)@\w+([-.]\w+).\w+([-.]\w+)*"它工作正常,但当我尝试输入非英文字母时出现问题,例如èéüûă等但我的问题是,当我在javascript中使用相同的表达式时,它允许这些字符,即使在服务器端,相同的表达式也允许这些字符。我认为'\w'允许所有字母数字字符以及非英文字符,但是我不知道为什么在验证器中使用它时不允许。如果我做错了什么,请提出建议。

随机推荐