首页 > 解决方案 > 为多个文件实现 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 不会转录完整文件。

有谁知道这个运行多个文件的例子或如何实现它?

谢谢。

标签: javamicrosoft-cognitiveazure-cognitive-services

解决方案


您可以创建一个函数来读取并返回目录中的文件列表:

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.
}

您也可以尝试使用批量转录功能!

如果存储有大量音频,批量转录是理想的选择。


推荐阅读