首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >语音到文字Java应用程序的实时字幕可能吗?

语音到文字Java应用程序的实时字幕可能吗?
EN

Stack Overflow用户
提问于 2022-04-12 11:30:45
回答 2查看 535关注 0票数 -4

这是将Google语音转换为文本API:

API接口

我想开发应用程序:

  1. 该应用程序在本地主机上启动。
  2. 我向http://localhost:8080打开浏览器
  3. 该应用程序显示简单的用户界面,主窗口显示来自笔记本电脑扬声器的任何英语音频的实时字幕,这可能是放大视频呼叫,参与者正在发言,我也在本地的web应用程序中看到了实时字幕。
  4. 使用滚动条的窗口中的屏幕上仍保留有活动标题。
  5. 活动标题保存在文本文件中,而新标题则继续在文本文件中追加。

重要的是,字幕要有最好的准确性和显示标题的速度,因为人是在说话。

能否做到这一点?如果不可能使用Google,那么替代API是什么呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-04-22 01:30:03

如果我没听错的话,我会把它分成两部分

  1. 将规范转录为文本,如下面的google所示
  2. 然后将标题作为流覆盖执行。 /对原始PCM音频数据执行流语音识别。/ @param fileName要转录的PCM音频文件的路径。//公共静态无效streamingRecognizeFile(String fileName)抛出异常,IOException { Path = Paths.get(fileName);byte[] data =Files.readAllBytes(路径);//实例化一个客户端,使用GOOGLE_APPLICATION_CREDENTIALS try (SpeechClient speech = SpeechClient.create()) { //配置本地原始PCM音频RecognitionConfig recConfig = RecognitionConfig.newBuilder() .setEncoding(AudioEncoding.LINEAR16) .setLanguageCode("en-US") .setSampleRateHertz(16000) .setModel(“默认”).build() .build();StreamingRecognitionConfig config =SpeechClient类ResponseApiStreamingObserver实现了ApiStreamObserver {私有的最终SettableFuture SettableFuture未来= SettableFuture.create();私有的最终列表消息=新的java.util.ArrayList();@覆盖公共void (T消息){messages.add(消息);}}@覆盖公共void (Throwable t) { future.setException(t);} @Override (){ future.set( messages );} //返回SettableFuture对象以获取接收到的消息/异常。公共StreamingRecognizeRequest.newBuilder().setStreamingConfig(config).build());未来(){返回未来;} ResponseApiStreamingObserver responseObserver =新的ResponseApiStreamingObserver<>();StreamingRecognizeResponse>可调用= speech.streamingRecognizeCallable();ApiStreamObserver requestObserver = callable.bidiStreamingCall(responseObserver);//第一个请求必须**仅**包含音频配置: requestObserver.onNext( StreamingRecognizeRequest.newBuilder().setStreamingConfig(config).build());/后续请求必须**只包含音频数据)。requestObserver.onNext( StreamingRecognizeRequest.newBuilder() .setAudioContent(ByteString.copyFrom( data )) .build());//标记发送数据后完成的传输。requestObserver.onCompleted();list response = responseObserver.future().get();For (StreamingRecognizeResponse response:response){ //用于流识别,结果列表有一个is_final结果(如果可用的话),后面有许多正在进行中的结果(如果iterim_results为真的话)。//只需在这里打印第一个结果。StreamingRecognitionResult结果= response.getResultsList().get(0);//对于给定的词组可以有几个可选的转录本。只需在这里使用// first (很可能)一个。SpeechRecognitionAlternative alternative = result.getAlternativesList().get(0);System.out.printf(转录本:%s\n,alternative.getTranscript());}}

为您的移动语音覆盖

https://github.com/algolia/voice-overlay-android

用于WebHTML5 覆盖

代码语言:javascript
复制
<video id="video" controls preload="metadata">
   <source src="video/sintel-short.mp4" type="video/mp4">
   <source src="video/sintel-short.webm" type="video/webm">
   <track label="English" kind="subtitles" srclang="en" src="captions/vtt/sintel-en.vtt" default>
   <track label="Deutsch" kind="subtitles" srclang="de" src="captions/vtt/sintel-de.vtt">
   <track label="Español" kind="subtitles" srclang="es" src="captions/vtt/sintel-es.vtt">
</video>

    // per the sample linked above you can feed the /  append the captions
     var subtitlesMenu;
if (video.textTracks) {
   var df = document.createDocumentFragment();
   var subtitlesMenu = df.appendChild(document.createElement('ul'));
   subtitlesMenu.className = 'subtitles-menu';
   subtitlesMenu.appendChild(createMenuItem('subtitles-off', '', 'Off'));
   for (var i = 0; i < video.textTracks.length; i++) {
      subtitlesMenu.appendChild(createMenuItem('subtitles-' + video.textTracks[i].language, video.textTracks[i].language, video.textTracks[i].label));
   }
   videoContainer.appendChild(subtitlesMenu);
}
票数 2
EN

Stack Overflow用户

发布于 2022-04-15 06:50:35

将语音转换为文本的最快、最有效的方法之一是Java (https://www.oracle.com/java/technologies/speech-api-frequently-asked-questions.html的文档)。

在文本转换的过程中,你需要把它分解成几个部分,正因为如此,意思可能略有变化,因为有些表达可能有一个不同的意思,但这将有助于减少最后翻译的时间。然后通过API发送已经接收到的片段(单词、短语)进行翻译。

您可以选择几个您喜欢的选项(例如https://rapidapi.com/blog/best-translation-api/),并检查哪个选项工作得更快。根据我的经验,“微软翻译文本”和“谷歌翻译”是最快的。我也认为你不可能得到即时翻译,但如果你测试了几个API选项,并围绕着是否同时处理所有句子、短语或单个单词,你可以将翻译时间缩短到最低限度。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71841850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档