2 回答

TA貢獻1865條經驗 獲得超7個贊
經過錯誤和試驗(并查看 javascript 示例)后,我可以解決問題。音頻的序列化版本應為 FLAC 格式。我將視頻文件 (webm) 按原樣發送到 Google Cloud。該站點上的演示使用 Javascript Audio API 提取音頻流,然后以 base64 格式發送數據以使其工作。
以下是我為獲取輸出而執行的步驟。
使用 FFMPEG 從 webm 中提取音頻流為 FLAC 格式。
ffmpeg -i sample.webm -vn -acodec flac sample.flac
提取的文件應使用存儲云提供或作為 ByteString 發送。
在調用語音 API 時設置適當的模型(英語語言
video
模型有效,法語模型有效command_and_search
)。我對此沒有任何合乎邏輯的理由。我在谷歌云站點上的演示中反復試驗后意識到了這一點。

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”。
添加回答
舉報