Не знаете, как транскрибировать файл wav из Google Cloud Storage для LongRunningRecognize преобразования в текст в C #? - PullRequest
0 голосов
/ 09 ноября 2019

Я могу конвертировать аудио файлы в текст, если они меньше минуты. Мне нужно расшифровать более длинные файлы. Очевидно, вам нужно иметь файл в облачном хранилище, но я не могу понять, есть ли одна команда, которая делает это, или я должен делать это отдельно. Теперь я использую:

var credential = GoogleCredential.FromFile(GoogleCredentials);
var channel = new Grpc.Core.Channel(SpeechClient.DefaultEndpoint.ToString(), credential.ToChannelCredentials());
var speech = SpeechClient.Create(channel);

var response = speech.LongRunningRecognize(
    new RecognitionConfig()
        {
            Encoding = RecognitionConfig.Types.AudioEncoding.Linear16,
            LanguageCode = "en",
        },
        RecognitionAudio.FromFile(waveFile));

response = response.PollUntilCompleted();

Я знаю, что мне нужно указать файл в облачном хранилище, например:

RecognitionAudio.FromStorageUri("gs://ldn-speech/" + waveFile);

Но я не знаю, как получить файлв ведро GS. Должен ли я сделать это на отдельном этапе или как часть одного из API речи? Я ищу кого-то, чтобы показать мне пример.

РЕДАКТИРОВАТЬ: я обнаружил, что мне нужно загрузить файл отдельно и может использовать файл учетных данных, который я уже использовал в процессе распознавания речи: Итак, всеМне нужно было:

var credential = GoogleCredential.FromFile(GoogleCredentials);
var storage = StorageClient.Create(credential);
using (var f = File.OpenRead(fullFileName))
{
fileName = Path.GetFileName(fullFileName);
storage.UploadObject(bucketName, fileName, null);
}

1 Ответ

0 голосов
/ 14 ноября 2019

В вашем случае есть еще один метод.

Как указано в ваших изменениях, вам действительно нужно было загрузить файл отдельно в корзину Cloud Storage. Если вы планируете транслировать длинные аудиофайлы (более 1 минуты) в текст, вы можете рассмотреть возможность использования распознавания асинхронной речи: https://cloud.google.com/speech-to-text/docs/async-recognize#speech-async-recognize-gcs-csharp

В примере кода используется хранилище Cloud Storage для хранения необработанного аудиовхода для длительной работы. процессы транскрипции. Также необходимо, чтобы вы создали и активировали учетную запись службы.

Вот пример:

static object AsyncRecognizeGcs(string storageUri)
{
    var speech = SpeechClient.Create();
    var longOperation = speech.LongRunningRecognize(new RecognitionConfig()
    {
        Encoding = RecognitionConfig.Types.AudioEncoding.Linear16,
        SampleRateHertz = 16000,
        LanguageCode = "en",
    }, RecognitionAudio.FromStorageUri(storageUri));
    longOperation = longOperation.PollUntilCompleted();
    var response = longOperation.Result;
    foreach (var result in response.Results)
    {
        foreach (var alternative in result.Alternatives)
        {
            Console.WriteLine($"Transcript: { alternative.Transcript}");
        }
    }
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...