Google Cloud Speech To Text дает 0 результатов - PullRequest
0 голосов
/ 22 мая 2019

Я использую Google Cloud Speech для текстового API в Java.

Я получаю 0 результатов при вызове speechClient.recognize

pom.xml:

<dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-speech</artifactId>
    <version>0.80.0-beta</version>
</dependency>

Java-код:

import java.io.FileInputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.cloud.speech.v1.RecognitionAudio;
import com.google.cloud.speech.v1.RecognitionConfig;
import com.google.cloud.speech.v1.RecognitionConfig.AudioEncoding;
import com.google.cloud.speech.v1.RecognizeResponse;
import com.google.cloud.speech.v1.SpeechClient;
import com.google.cloud.speech.v1.SpeechRecognitionAlternative;
import com.google.cloud.speech.v1.SpeechRecognitionResult;
import com.google.cloud.speech.v1.SpeechSettings;
import com.google.protobuf.ByteString;

public class SpeechToText {

    public static void main(String[] args) {

        // Instantiates a client
        try {

            String jsonFilePath = System.getProperty("user.dir") + "/serviceaccount.json";
            FileInputStream credentialsStream = new FileInputStream(jsonFilePath);
            GoogleCredentials credentials = GoogleCredentials.fromStream(credentialsStream);
            FixedCredentialsProvider credentialsProvider = FixedCredentialsProvider.create(credentials);

            SpeechSettings speechSettings = 
                    SpeechSettings.newBuilder()
                        .setCredentialsProvider(credentialsProvider)
                        .build();       

            SpeechClient speechClient = SpeechClient.create(speechSettings);

            //SpeechClient speechClient = SpeechClient.create();

            // The path to the audio file to transcribe         
            String fileName = System.getProperty("user.dir") + "/call-recording-790.opus";

            // Reads the audio file into memory
            Path path = Paths.get(fileName);
            byte[] data = Files.readAllBytes(path);
            ByteString audioBytes = ByteString.copyFrom(data);

            System.out.println(path.toAbsolutePath());

            // Builds the sync recognize request
            RecognitionConfig config = RecognitionConfig.newBuilder().setEncoding(AudioEncoding.LINEAR16)
                    .setSampleRateHertz(8000).setLanguageCode("en-US").build();

            RecognitionAudio audio = RecognitionAudio.newBuilder().setContent(audioBytes).build();

            System.out.println("recognize builder");

            // Performs speech recognition on the audio file
            RecognizeResponse response = speechClient.recognize(config, audio);
            List<SpeechRecognitionResult> results = response.getResultsList();

            System.out.println(results.size()); // ***** HERE 0

            for (SpeechRecognitionResult result : results) {

                // There can be several alternative transcripts for a given chunk of speech.
                // Just use the
                // first (most likely) one here.
                SpeechRecognitionAlternative alternative = result.getAlternativesList().get(0);
                System.out.printf("Transcription: %s%n", alternative.getTranscript());
            }
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

В приведенном выше коде я получаю results.size как 0. Когда я загружаю тот же опус-файл в демо-версию на https://cloud.google.com/speech-to-text/,, он дает выходной текстправильно.

Так почему вызов распознавания дает нулевой результат?

1 Ответ

0 голосов
/ 22 мая 2019

Для преобразования речи в текст может быть 3 причины, по которым следует возвращать пустой ответ:

  1. Звук нечеткий.
  2. Звук не разборчив.
  3. Аудио не использует правильную кодировку.

Из того, что я вижу, причина 3 - наиболее вероятная причина вашей проблемы.Чтобы решить эту проблему, проверьте эту страницу , чтобы узнать, как проверить кодировку вашего аудиофайла, которая должна соответствовать параметрам, отправленным в InitialRecognizeRequest.

...