使用音频文件信息创建json

问题描述 投票:0回答:1

我还是python新手。我想创建一个具有与音频文件相关的信息的json,还想为其添加开始时间和结束时间。

即使在我尝试计算结束时间之前,仍然出现了很多错误,但是一切都很好。

import re
import speech_recognition as sr
import json
import time
from datetime import datetime, date, time, timedelta
import wave
import contextlib
import sys
reload(sys)
sys.setdefaultencoding('utf-8')


def read_in():
    lines = sys.stdin.readlines()
    return json.loads(lines[0])


def myconverter(o):
    if isinstance(o, datetime.datetime):
        return o.__str__()


def convertToString():
    # lines = read_in()
    r = sr.Recognizer()
    text = ""
    duration = 0.0
    arr = ["test2.wav", "2020-05-11 16:04:22"]
    # for item in lines:
    #     arr.append(item)

    # print(arr)
    audio = arr[0]
    timestamp_begin = datetime.strptime(arr[1], '%Y-%m-%d %H:%M:%S')
    with contextlib.closing(wave.open(audio, 'r')) as f:
        frames = f.getnframes()
        rate = f.getframerate()
        # duration should be in seconds
        duration = frames / float(rate)
        print(duration)
    with sr.AudioFile(audio) as source:
        audio = r.record(source)
    try:
        text = r.recognize_google(audio, language='ko-kr')
        print(text)
    except Exception as e:
        print(e)
    result = {'begin': timestamp_begin, 'end': timestamp_begin +
              timedelta(0, duration), 'audio_text': text}
    print(json.dumps(result, default=myconverter))
    print(text)


def main():
    convertToString()


if __name__ == '__main__':
    main()

希望您能帮助我。我不知道在哪里解决该问题。

非常感谢。

Error messages

python
1个回答
1
投票

如您所见,如果您阅读了错误消息(总是个好主意,则错误发生在此行:

    if isinstance(o, datetime.datetime):

似乎您正在尝试访问同名datetime module中的datetime class。但这不起作用,因为导入行如下所示:

from datetime import datetime, date, time, timedelta

这将从datetime模块中将这些项目直接导入全局范围,因此它们在没有datetime.前缀的情况下变为可用。因此,只需省略该前缀:

    if isinstance(o, datetime):

或者,批量导入datetime模块:

import datetime

并在整个代码中使用datetime.datetimedatetime.datedatetime.timedatetime.timedeltadatetime.datetime.strptime(!)。这样可以更清楚地知道一切来自何处,以更大的冗长为代价;选择是你的。

© www.soinside.com 2019 - 2024. All rights reserved.