Для распознавания русской речи в C# можно использовать библиотеку от Google Cloud Speech-to-Text API. Ниже приведен пример консольного приложения, которое прослушивает микрофон и распознает речь на русском языке с использованием Google Cloud Speech-to-Text API.
Для распознавания русской речи в C# можно использовать библиотеку от Google Cloud Speech-to-Text API. Ниже приведен пример консольного приложения, которое прослушивает микрофон и распознает речь на русском языке с использованием Google Cloud Speech-to-Text API.
Шаги:
Создайте проект в Google Cloud Console и включите API Speech-to-Text.
Настройте учетные данные: создайте учетные данные (файл JSON) и скачайте его.
Установите
Google.Cloud .Speech.V1 NuGet пакет: откройте ваш проект в Visual Studio и установите пакет через NuGet Package Manager.
using Google.Cloud.Speech.V1;
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
// Укажите путь к файлу учетных данных JSON
string credentialPath = "path_to_your_google_cloud_credentials.json";
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", credentialPath);
var speech = SpeechClient.Create();
var streamingCall = speech.StreamingRecognize();
// Task для получения результатов распознавания
var responseReaderTask = Task.Run(async () =>
{
await foreach (var response in streamingCall.GetResponseStream())
{
foreach (var result in response.Results)
{
foreach (var alternative in result.Alternatives)
{
Console.WriteLine($"Transcript: {alternative.Transcript}");
}
}
}
});
// Настройки для распознавания речи
await streamingCall.WriteAsync(new StreamingRecognizeRequest
{
StreamingConfig = new StreamingRecognitionConfig
{
Config = new RecognitionConfig
{
Encoding = RecognitionConfig.Types.AudioEncoding.Linear16,
SampleRateHertz = 16000,
LanguageCode = "ru-RU"
},
InterimResults = true,
}
});
Console.WriteLine("Говорите что-нибудь...");
// Чтение данных с микрофона и отправка их в Google Cloud Speech API
using (var waveIn = new NAudio.Wave.WaveInEvent())
{
waveIn.DeviceNumber = 0;
waveIn.WaveFormat = new NAudio.Wave.WaveFormat(16000, 1);
waveIn.DataAvailable += async (sender, e) =>
{
await streamingCall.WriteAsync(new StreamingRecognizeRequest
{
AudioContent = Google.Protobuf.ByteString.CopyFrom(e.Buffer, 0, e.BytesRecorded)
});
};
waveIn.StartRecording();
Console.WriteLine("Нажмите Enter для остановки...");
Console.ReadLine();
waveIn.StopRecording();
}
await streamingCall.WriteCompleteAsync();
await responseReaderTask;
}
}