为了账号安全,请及时绑定邮箱和手机立即绑定

GCP 语音转文本 - Java API 不工作

GCP 语音转文本 - Java API 不工作

桃花长相依 2023-06-04 17:35:20
我在 Chrome 浏览器中使用 MediaRecorder 录制了一个示例 .webm 文件。当我使用 Google 语音 java 客户端获取视频的转录时,它返回空转录。这是我的代码的样子SpeechSettings settings = null;Path path = Paths.get("D:\\scrap\\gcp_test.webm");byte[] content = null;try {    content = Files.readAllBytes(path);    settings = SpeechSettings.newBuilder().setCredentialsProvider(credentialsProvider).build();} catch (IOException e1) {    throw new IllegalStateException(e1);}try (SpeechClient speech = SpeechClient.create(settings)) {    // Builds the request for remote FLAC file    RecognitionConfig config = RecognitionConfig.newBuilder()                    .setEncoding(AudioEncoding.LINEAR16)                    .setLanguageCode("en-US")                    .setUseEnhanced(true)                    .setModel("video")                    .setEnableAutomaticPunctuation(true)                    .setSampleRateHertz(48000)                    .build();    RecognitionAudio audio = RecognitionAudio.newBuilder().setContent(ByteString.copyFrom(content)).build();    // RecognitionAudio audio = RecognitionAudio.newBuilder().setUri("gs://xxxx/gcp_test.webm") .build();    // Use blocking call for getting audio transcript    RecognizeResponse response = speech.recognize(config, audio);    List<SpeechRecognitionResult> results = response.getResultsList();    for (SpeechRecognitionResult result : results) {        SpeechRecognitionAlternative alternative = result.getAlternativesList().get(0);        System.out.printf("Transcription: %s%n", alternative.getTranscript());    }} catch (Exception e) {    e.printStackTrace();    System.err.println(e.getMessage());}如果,我使用相同的文件并访问https://cloud.google.com/speech-to-text/并在演示部分上传文件。它似乎工作正常并显示转录。我对这里出了什么问题一无所知。我验证了演示发送的请求,这里看起来像我发送了一组准确的参数,但没有用。尝试将文件上传到云存储,但也给出了相同的结果(没有转录)。
查看完整描述

2 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

经过错误和试验(并查看 javascript 示例)后,我可以解决问题。音频的序列化版本应为 FLAC 格式。我将视频文件 (webm) 按原样发送到 Google Cloud。该站点上的演示使用 Javascript Audio API 提取音频流,然后以 base64 格式发送数据以使其工作。

以下是我为获取输出而执行的步骤。

  1. 使用 FFMPEG 从 webm 中提取音频流为 FLAC 格式。

    ffmpeg -i sample.webm -vn -acodec flac sample.flac

  2. 提取的文件应使用存储云提供或作为 ByteString 发送。

  3. 在调用语音 API 时设置适当的模型(英语语言video模型有效,法语模型有效command_and_search)。我对此没有任何合乎逻辑的理由。我在谷歌云站点上的演示中反复试验后意识到了这一点。


查看完整回答
反对 回复 2023-06-04
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

我得到了 flac 编码文件的结果。


示例代码结果带有时间戳的单词,


public class SpeechToTextSample {


public static void main(String... args) throws Exception {


 try (SpeechClient speechClient = SpeechClient.create()) {


   String gcsUriFlac = "gs://yourfile.flac";


   RecognitionConfig config =

       RecognitionConfig.newBuilder()

           .setEncoding(AudioEncoding.FLAC)  

           .setEnableWordTimeOffsets(true)

           .setLanguageCode("en-US")

           .build();


   RecognitionAudio audio = RecognitionAudio.newBuilder().setUri(gcsUriFlac).build(); //for large files

   OperationFuture<LongRunningRecognizeResponse, LongRunningRecognizeMetadata> response = speechClient.longRunningRecognizeAsync(config, audio);

   while (!response.isDone()) {

          System.out.println("Waiting for response...");

          Thread.sleep(1000);

        }

   // Performs speech recognition on the audio file


   List<SpeechRecognitionResult> results = response.get().getResultsList();


   for (SpeechRecognitionResult result : results) {

      SpeechRecognitionAlternative alternative = result.getAlternativesList().get(0);

     System.out.printf("Transcription: %s%n", alternative.getTranscript());

     for (WordInfo wordInfo : alternative.getWordsList()) {

         System.out.println(wordInfo.getWord());

         System.out.printf(

             "\t%s.%s sec - %s.%s sec\n",

             wordInfo.getStartTime().getSeconds(),

             wordInfo.getStartTime().getNanos() / 100000000,

             wordInfo.getEndTime().getSeconds(),

             wordInfo.getEndTime().getNanos() / 100000000);

       }

   }

 }

}

}

GCP 支持不同的语言,我在示例中使用了“en-US”。



查看完整回答
反对 回复 2023-06-04
  • 2 回答
  • 0 关注
  • 127 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信