Python 使用音频语音识别方法逐行写入文本文件

Python 使用音频语音识别方法逐行写入文本文件,python,tkinter,python-3.6,Python,Tkinter,Python 3.6,我正在尝试使用.wav格式的音频从语音识别生成一个文本文件。这是为了得到字幕。我已经得到了文本文件,但是现在的问题是文本是在一个长的行中生成的 我想让他们一行一行地排好(也许5个字后就会排到下一行),因为我想在tkinter窗口中显示字幕。正如我所说,我已经让它们出现在tkinter窗口上,唯一的问题是文本文件没有逐行生成。请帮帮我。这是我最后一年的项目,因为我还是一名学位学生 AUDIO_FILE = path.get() r= sr.Recognizer() wit

我正在尝试使用.wav格式的音频从语音识别生成一个文本文件。这是为了得到字幕。我已经得到了文本文件,但是现在的问题是文本是在一个长的行中生成的

我想让他们一行一行地排好(也许5个字后就会排到下一行),因为我想在tkinter窗口中显示字幕。正如我所说,我已经让它们出现在tkinter窗口上,唯一的问题是文本文件没有逐行生成。请帮帮我。这是我最后一年的项目,因为我还是一名学位学生

    AUDIO_FILE = path.get()

    r= sr.Recognizer()
    with sr.AudioFile(AUDIO_FILE) as source:
        audio = r.record(source)

    try:
        filename = ".txt"
        f = open( filename , "w+")

        a = f.writelines(r.recognize_google(audio))
        b = a.split("\n\n") 
        b[:] = (value for value in b if value is not '\t')
        f.close()

    except sr.UnknownValueError:
        print("Google could not understand audio")
    except sr.RequestError as e:
        print("Google error; {0}".format(e)) 

    return filename
也许你们知道如何编写一个数组,从音频中逐行生成/写入文本文件。我重复一遍,我要“一行一行”

这就是我犯的错误。请帮帮我

b = a.split("\n\n")
AttributeError: 'NoneType' object has no attribute 'split'

您在
b=a.split(“\n\n”)
上的错误是因为您似乎认为
f.writelines()
将返回某些内容。它没有,因此
a
具有值
None
,并且不能拆分

文档说明了
writelines()
的功能:

写线(行)

将行列表写入流。没有添加行分隔符,因此通常每个提供的行都有一行 最后是分隔符

因此,如果希望在输出文件中有换行符,则必须在调用
writelines()
之前将它们放在那里

但是您根本不应该调用
writelines()
,因为它需要一个字符串列表,而
recognize\u google()
返回一个字符串

由于您得到的是一个长字符串,并且希望每行5个单词,因此需要将文本分成5个单词的行,并为每行调用
write()
。大概是这样的:

recognized_text = r.recognize_google(audio)
remainder = recognized_text.split()
while remainder:
    line, remainder = remainder[:5], remainder[5:]
    f.write(' '.join(line) + "\n")

始终将完整的错误消息(回溯)放在问题中(作为文本,而不是屏幕截图)。还有其他有用的信息,我们下次可以参考。对不起,我是新来的。不管怎样,谢谢你为我编辑它们。谢谢你,我像你说的那样尝试了这个方法,但似乎每行只有一个字母。我希望它们像一个包含5个单词的句子一样出现,5个单词后,它将转到下一行。是否可以显示数组方法?已编辑。我看到您的代码正在调用
writelines()
,愚蠢地认为您正在传递一个字符串列表,这正是它所期望的。非常感谢!你已经帮我更进一步地完成了我最后一年的项目。:()()())()))我得到了它!