Top.Mail.Ru
Ответы
Аватар пользователя
11 месяцев назад
от

Распознавание русской речи на C#!

Подскажите пожалуйста нормальный способ, в консольном приложении прослушивать микрофон, и переводить мою речь в текст. Пытался через microsoft.Speeth, там не поддерживаются языки кроме en-us, мб аддон есть для русского? Ну или другое решение

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Просветленный
11мес

Для распознавания русской речи в 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.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
 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; 
    } 
} 
 
Аватар пользователя
Ученик
8мес

Спасибо, работает