Google Cloud Speech-to-Text API возвращает только requestId и totalBilledTime.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Google Cloud Speech-to-Text API возвращает только requestId и totalBilledTime.

Сообщение Anonymous »

Тело ответа
Я пытаюсь реализовать API преобразования речи в текст Google Cloud в Unity.
В URL-адресе используется "https://speech.googleapis.com/v1/speech ... "+{API_KEY}
Подробный код приведен ниже.
Ответ request.downloadHandler.text содержит только requestId и totalBilledTime.
Есть ли какое-нибудь решение?
Я хочу иметь возможность получать правильные данные ответа.
Обычное тело ответа
{
results,
totalBilledTime,
speechAdaptationInf,
requestId,

var jsonRequest = new SpeechToTextRequest
{
config = new AudioConfig { encoding = "LINEAR16", sampleRateHertz = 16000, languageCode = "ja-JP"},
audio = new SpeechToTextInput { content = base64Audio}
};

var request = new UnityWebRequest(url, "POST")
{
uploadHandler = new UploadHandlerRaw(Encoding.UTF8.GetBytes(JsonUtility.ToJson(jsonRequest))),
downloadHandler = new DownloadHandlerBuffer()
};
request.SetRequestHeader("Content-Type", "application/json");

await request.SendWebRequest().ToUniTask();

if (request.result == UnityWebRequest.Result.Success)
{
var response = request.downloadHandler.text;
}
else
{
throw new Exception($"Error: {request.error}");
}

[Serializable]
private class SpeechToTextRequest
{
public AudioConfig config;
public SpeechToTextInput audio;
}

[Serializable]
private class AudioConfig
{
public string encoding = "LINEAR16";
public int sampleRateHertz = 16000;
public string languageCode = "ja-JP";
}

[Serializable]
private class SpeechToTextInput
{
public string content;
}

Данные AudioClip кодируются в Base64 и помещаются в base64Audio.
Преобразование в Base64 осуществляется в следующем формате
string ConvertAudioClipToBase64(AudioClip clip)
{
float[] samples = new float[clip.samples * clip.channels];
clip.GetData(samples, 0);

short[] pcmData = ConvertToPCM16(samples);

using (var fileStream = new FileStream("output.pcm", FileMode.Create, FileAccess.Write))
{
using (var binaryWriter = new BinaryWriter(fileStream))
{
foreach (short sample in pcmData)
{
binaryWriter.Write(sample);
}
}
}

byte[] audioData = File.ReadAllBytes("output.pcm");

string base64String = Convert.ToBase64String(audioData);
return base64String;
}

private short[] ConvertToPCM16(float[] samples)
{
short[] pcmData = new short[samples.Length];
for (int i = 0; i < samples.Length; i++)
{
pcmData = (short)(Mathf.Clamp(samples, -1f, 1f) * short.MaxValue);
}
return pcmData;
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... billedtime
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»