Я получил результаты из речи Google в переменной
data = {'name': '1235433175192040985', 'metadata': {'@type': 'type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeMetadata', 'progressPercent': 100, 'startTime': '2018-04-11T12:56:58.237060Z', 'lastUpdateTime': '2018-04-11T12:57:44.944653Z'}, 'done': true, 'response': {'@type': 'type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeResponse', 'results': [{'alternatives': [{'transcript': 'hi how are you', 'confidence': 0.92438406}]}, {'alternatives': [{'transcript': 'How are you doing?', 'confidence': 0.9402676}]}]}}
json_dict = json.loads(data)
При этом выдается ошибка
JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
Для остального парсинга написал
for result in json_dict["response"]["results"]:
if "alternatives" in result:
alternatives = result["alternatives"][0]
if "confidence" in alternatives:
print(alternatives["confidence"])
if "transcript" in alternatives:
print(alternatives["transcript"])
Что я делаю неправильно?
Не могли бы вы вставить исходный JSON? json.loads получает строку, и вы используете dict.






Парсер JSON в Python ожидает, что ваш большой двоичный объект будет использовать двойные кавычки, поскольку это Стандарт JSON.
{
"name": "John Doe"
}
Вы можете заменить одинарные кавычки двойными, как описано в этот ответ.
Однако я почти уверен, что проблему можно решить в другом месте, поскольку Google API, скорее всего, использует в ответах действительный JSON. Как вы анализируете ответ API Google?
тогда почему Google отправляет ответ в форме одинарной кавычки
Я использовал вышеуказанный метод для анализа вышеуказанных данных, но теперь Google изменил свой ответ, и код не работает.
Я использовал это для старых ответов Google Speech API, но сейчас он не работает
Проблема в вашем фрагменте заключается в том, что вы передаете dict в json.loads. json.loads декодирует json в dict, поэтому он избыточен и неверен. читать документы
Для dict не нужны дополнительные методы json, вы можете работать с ним как есть.
for result in data["response"]["results"]:
if "alternatives" in result:
alternatives = result["alternatives"][0]
if "confidence" in alternatives:
print(alternatives["confidence"])
if "transcript" in alternatives:
print(alternatives["transcript"])
Дает такой результат:
0.92438406
hi how are you
0.9402676
How are you doing?
Есть ли способ или язык, с помощью которого я могу проанализировать эти данные, у меня есть тонны этих данных, и я не хочу восстанавливать все это снова.