java - 为多个文件实现 Microsoft.CognitiveServices.Speech 识别
问题描述
我已经从这里得到了编码示例来工作。
我可以运行一个 .wav 文件并获取脚本,但是在示例中,程序永远不会结束,直到我按下一个键:
System.out.println("Press any key to stop");
new Scanner(System.in).nextLine();
这似乎在查询服务时人为地暂停了所有内容。如果我删除了那一行,程序会快速跳转并结束,而无需等待服务响应。
问题:如何在无需按键的情况下恢复/继续完整转录的程序?
我想为多个 .wav 文件运行这个,一个接一个地转录。但到目前为止,它运行第一个然后等待。
我一直在搜索文档,并且尝试了多种方法,包括使用recognizer.close();
我希望结束SpeechRecognizer
但似乎无济于事的方法。
或使用result = recognizer.recognizeOnceAsync().get();
which 不会转录完整文件。
有谁知道这个运行多个文件的例子或如何实现它?
谢谢。
解决方案
您可以创建一个函数来读取并返回目录中的文件列表:
private static String[] GetFiles(String directory)
{
String[] files = (new File(directory)).list(File::isFile);
return files;
}
然后循环遍历它们以处理它们,然后转录它们。
String[] files = GetFiles(args[0]);
for (String file : files)
{
//Your code goes here.
System.out.printf("File %1$s processed" + "\r\n",file);//print out which file has been successfully processed.
}
您也可以尝试使用批量转录功能!
如果存储有大量音频,批量转录是理想的选择。
推荐阅读
- flutter - 无法使用gridview中的listview在页面上滚动
- linux - 如果用户未输入任何值,如何在我的 bash 脚本中显示错误
- flutter - 在颤动中格式化文本
- javascript - 选择器 materiel-ui 选项的部分视图
- nix - 具有自定义用户 systemd 单元的 Nixos 容器
- sql - 向我的 sql 查询添加 distinct 会使其加载很长时间并且无法正常工作
- r - 在R中将多个数据帧的行绑定到一个数据帧中
- php - 如何将哈希密码从注册连接到登录 PHP/MySQL
- javascript - Chrome扩展历史API的代理回调函数
- docker - 无法使用前端 dockerfile 解决