Я использую IBM Watson
и python3
для перевода аудиофайла в текстовый файл. Он возвращает результаты в формате JSON. В результате JSON выглядит так...
{
"results": [
{
"alternatives": [
{
"transcript": "Marcus white is the managing director of quartz power group an energy company ",
"confidence": 0.85,
"word_confidence": [
[
"Marcus",
0.678
],
[
"white",
0.99
],
[
"is",
0.988
],
[
"the",
1.0
],
[
"managing",
1.0
],
[
"director",
1.0
],
[
"of",
1.0
],
[
"quartz",
0.394
],
[
"power",
0.737
],
[
"group",
0.968
],
[
"an",
0.783
],
[
"energy",
0.989
],
[
"company",
0.844
]
],
"timestamps": [
[
"Marcus",
12.28,
12.78
],
[
"white",
12.78,
13.17
],
[
"is",
13.17,
13.33
],
[
"the",
13.33,
13.42
],
[
"managing",
13.42,
13.83
],
[
"director",
13.83,
14.39
],
[
"of",
14.39,
14.52
],
[
"quartz",
14.52,
15.0
],
[
"power",
15.0,
15.36
],
[
"group",
15.36,
15.79
],
[
"an",
15.93,
16.08
],
[
"energy",
16.08,
16.45
],
[
"company",
16.45,
16.95
]
]
}
],
"final": true
},
{
"alternatives": [
{
"transcript": "every month the departmental manages meet to discuss high level issues in the company ",
"confidence": 0.925,
"word_confidence": [
[
"every",
1.0
],
[
"month",
0.993
],
[
"the",
0.728
],
[
"departmental",
1.0
],
[
"manages",
0.7
],
[
"meet",
0.77
],
[
"to",
1.0
],
[
"discuss",
1.0
],
[
"high",
0.835
],
[
"level",
0.984
],
[
"issues",
1.0
],
[
"in",
0.67
],
[
"the",
0.927
],
[
"company",
0.994
]
],
"timestamps": [
[
"every",
18.1,
18.39
],
[
"month",
18.39,
18.93
],
[
"the",
18.96,
19.07
],
[
"departmental",
19.07,
19.73
],
[
"manages",
19.73,
20.29
],
[
"meet",
20.29,
20.56
],
[
"to",
20.56,
20.66
],
[
"discuss",
20.66,
21.12
],
[
"high",
21.12,
21.33
],
[
"level",
21.33,
21.64
],
[
"issues",
21.64,
22.08
],
[
"in",
22.08,
22.18
],
[
"the",
22.18,
22.27
],
[
"company",
22.27,
22.75
]
]
}
],
"final": true
},
Этот формат повторяется для каждого переведенного сегмента. Я пытаюсь извлечь все транскрипции, то есть значение для transcript
. Я попробовал это:
index = 0
for [index]["transcript"] in ["results"][0]["alternatives"]:
print (["results"][0]["alternatives"][index]["transcript"])
index += 1
Но это не удается из-за того, что каждый объект транскрипции внедряется в список. Полный путь для первого значения транскрипции:
d["results"][0]["alternatives"][0]["transcript"]
Как я могу перебирать этот список, чтобы извлечь все значения транскрипции и добавить их в строковую переменную?
Приветствия :)
for result in d['results']:
for alternative in result['alternatives']:
# add to your string here
print alternative['transcript']
В общем, python позволяет вам перебирать объекты в своих списках, вместо того чтобы итерации с использованием индексов, что более часто встречается в таких языках, как C++.