1

J'ai récemment mis à jour mon code Android Google Cloud Speech de v1beta1 à v1. Il y avait quelques changements dans l'API, l'un d'eux était une nouvelle méthode appelée getWordsList().Comment utiliser Google Cloud Speech v1 sur Android?

Je veux utiliser la getWordsList() dans mon projet Android, mais la méthode ne semble pas être visible à mon code:

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() + " "); 
     } 
     ... 

Ce code est du repo officiel, cependant, je suis obtenir l'erreur suivante:

Cannot resolve method 'getWordsList()'

Voici mon gradle:

apply plugin: 'com.android.application' 
apply plugin: 'com.google.protobuf' 

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.0" 
    defaultConfig { 
     applicationId "org.test.test" 
     minSdkVersion 24 
     targetSdkVersion 24 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 

     // Enabling multidex support. 
     multiDexEnabled true 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

protobuf { 
    protoc { 
     artifact = 'com.google.protobuf:protoc:3.0.0' 
    } 
    plugins { 
     grpc { 
      artifact = 'io.grpc:protoc-gen-grpc-java:1.0.0' 
     } 
     javalite { 
      artifact = 'com.google.protobuf:protoc-gen-javalite:3.0.0' 
     } 
    } 
    generateProtoTasks { 
     all().each { 
      task -> 
       task.builtins { 
        remove javanano 
        java { 
        } 
       } 
       task.plugins { 
        grpc { 
        } 
       } 
     } 
    } 
} 

ext { 
    supportLibraryVersion = '25.0.0' 
    grpcVersion = '1.4.0' 
} 

dependencies { 
    // Generic dependencies 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    testCompile 'junit:junit:4.12' 
    compile 'com.google.cloud:google-cloud-speech:0.23.1-alpha' 

    // Support libraries 
    compile "com.android.support:appcompat-v7:$supportLibraryVersion" 
    compile "com.android.support:design:$supportLibraryVersion" 
    compile "com.android.support:cardview-v7:$supportLibraryVersion" 
    compile "com.android.support:recyclerview-v7:$supportLibraryVersion" 
    compile 'com.android.support:multidex:1.0.1' 

    // gRPC 
    compile 'javax.annotation:javax.annotation-api:1.2' 
    compile("io.grpc:grpc-protobuf:${grpcVersion}") { 
     exclude module: 'jsr305' 
    } 
    compile("io.grpc:grpc-stub:${grpcVersion}") { 
     exclude module: 'jsr305' 
    } 
    compile("io.grpc:grpc-auth:${grpcVersion}") { 
     exclude module: 'jsr305' 
    } 
    compile("io.grpc:grpc-okhttp:${grpcVersion}") { 
     exclude module: 'jsr305' 
    } 
    // OAuth2 for Google API 
    compile('com.google.auth:google-auth-library-oauth2-http:0.3.0') { 
     exclude module: 'jsr305' 
     exclude module: 'httpclient' 
    } 

} 

J'ai aussi remarqué, je ne peux pas utiliser toutes les bibliothèques GRPC, par exemple la bibliothèque suivante ne peut pas être importé:

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

Comment puis-je utiliser getWordsList() correctement dans Android? Est-ce que je n'utilise pas la bonne version de construction?

+0

Il n'existe malheureusement pas de version de construction correcte à utiliser pour le moment. Les bibliothèques clientes Google Cloud Java [ne sont actuellement pas compatibles avec Android] (https://cloud.google.com/speech/docs/reference/libraries#client-libraries-install-java). C'est-à-dire qu'il pourrait y avoir des façons de faire fonctionner les bibliothèques mais comme elles ne sont pas officiellement supportées, on s'attend à ce que toutes les fonctionnalités ne soient pas là. –

Répondre

0

J'utilise ce lieu de getWordList():

final SpeechRecognitionAlternative alternative = result.getAlternatives(0); 
text = alternative.getTranscript(); 

espérons que cela fonctionne.

+0

cela ne fournit pas de métadonnées que getWordsList est censé fournir. – bear