Я пытаюсь использовать 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;
}
Я получаю следующую ошибку: