如何在Android上使用谷歌云语音v1?

如何在Android上使用谷歌云语音v1?,android,android-studio,android-gradle-plugin,build.gradle,google-cloud-speech,Android,Android Studio,Android Gradle Plugin,Build.gradle,Google Cloud Speech,我最近将我的Android谷歌云语音代码从v1beta1更新为v1。API中有几个更改,其中一个是名为getWordsList()的新方法 我想在我的Android项目中使用getWordsList(),但是我的代码似乎看不到该方法: import com.google.cloud.speech.v1.SpeechGrpc; import com.google.cloud.speech.v1.SpeechRecognitionAlternative; import com.google.clou

我最近将我的Android谷歌云语音代码从v1beta1更新为v1。API中有几个更改,其中一个是名为getWordsList()的新方法

我想在我的Android项目中使用getWordsList(),但是我的代码似乎看不到该方法:

import com.google.cloud.speech.v1.SpeechGrpc;
import com.google.cloud.speech.v1.SpeechRecognitionAlternative;
import com.google.cloud.speech.v1.StreamingRecognizeResponse;
import com.google.cloud.speech.v1.WordInfo;

...

public void onNext(StreamingRecognizeResponse response) {
  int numOfResults = response.getResultsCount();
  if( numOfResults > 0 ){
    for (int i=0;i<numOfResults;i++){
      StreamingRecognitionResult result = response.getResultsList().get(i);
      SpeechRecognitionAlternative alternative = result.getAlternativesList().get(0);
      for (WordInfo wordInfo: alternative.getWordsList()) { //-->>Cannot resolve 'method'
        System.out.println(wordInfo.getWord());
        System.out.println(wordInfo.getStartTime().getSeconds() + " ");
      }
      ...
我还注意到,我无法使用所有grpc库,例如,无法导入以下库:

import com.google.api.gax.rpc.StreamingCallable;

如何在Android中正确使用getWordsList()?我是否使用了正确的生成版本?

我使用此版本而不是getWordList():


希望它能起作用。

我用这个代替getWordList():


希望它能起作用。

您没有附上用于请求的代码,但请确保您正在将SetEnableWordTimeOffset添加到识别器请求:

  public void recognizeInputStream(InputStream stream) {
    try {
        mApi.recognize(
                RecognizeRequest.newBuilder()
                        .setConfig(RecognitionConfig.newBuilder()
                                .setEncoding(RecognitionConfig.AudioEncoding.LINEAR16)
                                .setLanguageCode("en-US")
                                .setSampleRateHertz(16000)
                                .setEnableWordTimeOffsets(true)
                                .build())
                        .setAudio(RecognitionAudio.newBuilder()
                                .setContent(ByteString.readFrom(stream))
                                .build())
                        .build(),
                mFileResponseObserver);
    } catch (IOException e) {
        Log.e(TAG, "Error loading the input", e);
    }
}

您没有附上用于请求的代码,但请确保您正在将SetEnableWordTimeOffset添加到识别器请求:

  public void recognizeInputStream(InputStream stream) {
    try {
        mApi.recognize(
                RecognizeRequest.newBuilder()
                        .setConfig(RecognitionConfig.newBuilder()
                                .setEncoding(RecognitionConfig.AudioEncoding.LINEAR16)
                                .setLanguageCode("en-US")
                                .setSampleRateHertz(16000)
                                .setEnableWordTimeOffsets(true)
                                .build())
                        .setAudio(RecognitionAudio.newBuilder()
                                .setContent(ByteString.readFrom(stream))
                                .build())
                        .build(),
                mFileResponseObserver);
    } catch (IOException e) {
        Log.e(TAG, "Error loading the input", e);
    }
}

这没有提供getWordsList应该提供的元数据。这没有提供getWordsList应该提供的元数据。很遗憾,目前没有正确的生成版本供您使用。谷歌云Java客户端库。也就是说,可能有办法让这些库正常工作,但由于它们没有得到官方支持,因此预计不会有所有的功能。遗憾的是,目前没有正确的构建版本供您使用。谷歌云Java客户端库。也就是说,可能有一些方法可以让这些库正常工作,但由于它们没有得到官方支持,因此预计不会有所有的功能。
  public void recognizeInputStream(InputStream stream) {
    try {
        mApi.recognize(
                RecognizeRequest.newBuilder()
                        .setConfig(RecognitionConfig.newBuilder()
                                .setEncoding(RecognitionConfig.AudioEncoding.LINEAR16)
                                .setLanguageCode("en-US")
                                .setSampleRateHertz(16000)
                                .setEnableWordTimeOffsets(true)
                                .build())
                        .setAudio(RecognitionAudio.newBuilder()
                                .setContent(ByteString.readFrom(stream))
                                .build())
                        .build(),
                mFileResponseObserver);
    } catch (IOException e) {
        Log.e(TAG, "Error loading the input", e);
    }
}