Вывод NAudio Micro в Google Speach to Text - PullRequest
0 голосов
/ 11 марта 2020

Я пытаюсь использовать Google Speach API. Мне нужно перенести текущую запись с микрофона. Я пытаюсь сделать это:

async void OnRecorderMaximumCalculated(object sender, MaxSampleEventArgs e)
{
    float peak = Math.Max(e.MaxSample, Math.Abs(e.MinSample));

    peak *= 100;
    progressBar1.Value = (int)peak;
    label1.Text = (Math.Round(peak, 2)).ToString();


    if (peak > 35)
    {
        Shoom = 0;

        if (!record)
        {
            record = true;
            waveIn.StartRecording();
            label1.ForeColor = Color.Green;
        }
    }
    else if (record)
    {
        Shoom++;
    }
    else
    {
        label1.ForeColor = Color.Black;
    }

    if (Shoom >= 2)
    {
        Shoom = 0;
        record = false;
        waveIn.StopRecording();

        Task me = StreamBufferToGooglesAsync(true);
    }
}

Когда я звоню StreamBufferToGooglesAsync, я передаю записанный голос. Он работал правильно, используя библиотеку от Google, но мне нужно изменить способ обработки голоса в текст.

private async Task<object> StreamBufferToGooglesAsync(bool clear = false)
{

    byte[] buffer = new byte[waveBuffer.BufferLength];
    int offset = 0;
    int count = waveBuffer.BufferLength;

    if (clear)
        waveBuffer.ClearBuffer();

    string apikey = "API-KEY";

    WebRequest request = WebRequest.Create($"https://www.google.com/speech-api/v2/synthesize?enc=l16&key={apikey}&text={1}&lang=en-US");


    request.Method = "POST";

    request.ContentType = "audio/L16; rate=16000";        
    request.ContentLength = count;

    Stream dataStream = request.GetRequestStream();
    dataStream.Write(buffer, 0, count);
    dataStream.Close();
    WebResponse response = request.GetResponse();

    dataStream = response.GetResponseStream();
    StreamReader reader = new StreamReader(dataStream);

    string responseFromServer = reader.ReadToEnd();

    reader.Close();
    dataStream.Close();
    response.Close();

   // return responseFromServer;

    return 0;
}

Я получаю следующую ошибку: Screen of error

...