Как я могу сделать конкретный c расчет из JSON файла - PullRequest
1 голос
/ 04 февраля 2020

Ниже вы можете найти файл json. Этот файл содержит результаты речи.

Текущая ситуация:

Вы можете увидеть «CombinedResults», содержащий весь текст. В моем примере:

эй, доброе утро, это Х, я работаю в качестве сотрудника, и это всего лишь аудиофайл для проверки "

Желаемая ситуация

Вместо всего текста я хочу видеть молчание в секундах и в разговоре.

эй, доброе утро [секунд: 3.1] это Х, я работаю в качестве сотрудника, и это всего лишь аудиофайл для проверки "

Как мне решить эту проблему?

Есть возможность получить желаемый результат. Что я думаю, что мне нужно сделать:

  1. L oop через «SegmentResults» и сохранить A). "OffsetInSeconds", B). "DurationInSeconds", C). «NBest» -> «Лексический» (содержащий текст).

  2. После этого этот расчет может помочь нам с вычислением «секунд»:

('OffsetInSeconds' + 'DurationInSeconds' ) предыдущего 'SegmentResult' - ('OffsetInSeconds') текущего 'SegmentResult'

В этом примере: разница между 0,57 + 1,67 = 2,24 и 5,34 = 3,1 секунды.

Я пытался закодировать это, но я застрял. Почему? Потому что я могу рассчитать «OffsetInSeconds» + «DurationInSeconds» для текущего сегмента (где я сейчас в цикле). Однако тогда я скучаю по предыдущему расчету. Также получение всего текста в желаемом выводе является проблемой.

Надеюсь, кто-нибудь может помочь. Заранее большое спасибо!

# Focus on the SegmentResults 
All_result_list = Test_JSON["AudioFileResults"][0].get("SegmentResults") 

# Loop over the SegmentResults, to get each Segment separately 

for speech_result in All_result_list:
    print(type(speech_result))
    #print(speech_result)
    Pause_Time = 0 
    Off_Set_Seconds = speech_result.get('OffsetInSeconds')
    Duration_Seconds = speech_result.get('DurationInSeconds')

    print(Off_Set_Seconds)
    print(Duration_Seconds)
    Text_All = speech_result.get('NBest')

    for correct_text in Text_All:
        Text = correct_text.get('Lexical')
        print(Text)

Пожалуйста, найдите здесь файл json:

Test_JSON = {
  "AudioFileResults": [
    {
      "AudioFileName": "Channel.0.wav",
      "AudioFileUrl": null,
      "AudioLengthInSeconds": 29.76,
      "CombinedResults": [
        {
          "ChannelNumber": null,
          "Lexical": "hey good morning this is X from am i'm working as a employee and this is just an audio file to test",
          "ITN": "hey good morning this is X from am i'm working as a employee and this is just an audio file to test",
          "MaskedITN": "Hey good morning This is X from am I'm working as a employee and this is just an audio file to test",
          "Display": "Hey good morning. This is X from am I'm working as a employee and this is just an audio file to test"
        }
        ],
      "SegmentResults": [
        {
          "RecognitionStatus": "Success",
          "ChannelNumber": null,
          "SpeakerId": null,
          "Offset": 5700000,
          "Duration": 16700000,
          "OffsetInSeconds": 0.57,
          "DurationInSeconds": 1.67,
          "NBest": [
            {
              "Confidence": 0.9073331,
              "Lexical": "hey good morning",
              "ITN": "hey good morning",
              "MaskedITN": "Hey good morning",
              "Display": "Hey good morning.",
              "Sentiment": null,
              "Words": null
            }
            ]
        },
        {
          "RecognitionStatus": "Success",
          "ChannelNumber": null,
          "SpeakerId": null,
          "Offset": 53400000,
          "Duration": 66700000,
          "OffsetInSeconds": 5.34,
          "DurationInSeconds": 6.67,
          "NBest": [
            {
              "Confidence": 0.8709568,
              "Lexical": "this is X from am i'm working as a employee and this is just an audio file to test",
              "ITN": "this is X from am i'm working as a employee and this is just an audio file to test",
              "MaskedITN": "This is X from am I'm working as a employee and this is just an audio file to test",
              "Display": "This is X from am I'm working as a employee and this is just an audio file to test.",
              "Sentiment": null,
              "Words": null
            }
            ]
        }
        ]
    }
    ]
}

1 Ответ

1 голос
/ 04 февраля 2020

Похоже, вам просто нужно отследить предыдущее значение смещения в секундах + длительность в секундах.

previous_time = None

for speech_result in All_result_list:
    print(type(speech_result))

    Off_Set_Seconds = speech_result.get('OffsetInSeconds')
    Duration_Seconds = speech_result.get('DurationInSeconds')

    if previous_time:
        Pause_Time = Off_Set_Seconds - previous_time
        print(f'[seconds: {Pause_Time}]')

    previous_time = Off_Set_Seconds + Duration_Seconds

    Text_All = speech_result.get('NBest')

Возможно, это проблема с пробелами, но почему вы вкладываете здесь l oop ? Похоже, что в вашем примере JSON есть только один элемент в списке. Если это так, просто вызовите элемент [0].

    for correct_text in Text_All:
        Text = correct_text.get('Lexical')
        print(Text)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...