Тело ответа
Я пытаюсь реализовать 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
Google Cloud Speech-to-Text API возвращает только requestId и totalBilledTime. ⇐ C#
Место общения программистов C#
1732449396
Anonymous
Тело ответа
Я пытаюсь реализовать API преобразования речи в текст Google Cloud в Unity.
В URL-адресе используется "https://speech.googleapis.com/v1/speech:recognize?key="+{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[i] = (short)(Mathf.Clamp(samples[i], -1f, 1f) * short.MaxValue);
}
return pcmData;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79219835/google-cloud-speech-to-text-api-only-returns-requestid-and-totalbilledtime[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия