Я пытаюсь создать программу преобразования речи в текст для запуска через WAV-файл, извлечения текста из звуковой дорожки для добавления в текстовый файл, и, к сожалению, я получаю исключение MEMORYERROR , мой код ниже, если вы можете, пожалуйста, помогите мне решить эту проблему, это будет очень признателен Я также знаю о других ошибках, но поскольку я по-прежнему являюсь промежуточным звеном, если вы объясните проблему, пожалуйста, объясните немного проще, чтобы мне было легче понять
import speech_recognition as sr
from tkinter import Tk
from tkinter.filedialog import askopenfilename # "open file" window to select file
def recognize_speech_from_audio_file(recognizer, audioPath):
if not isinstance(recognizer, sr.Recognizer): # error if not instance of Recognizer
raise TypeError("'recognizer' must be 'Recognizer' instance")
if not isinstance(audioPath, sr.AudioFile): # error if not instance of AudioFile
raise TypeError("'audioFile' must be 'AudioFile' instance")
with audioPath as src:
recognizer.adjust_for_ambient_noise(src) # adjust file noise
audio = recognizer.record(src) # copy new file to variable for use later
# set up response with api
response = {
"success": True,
"error": None,
"transcription": None
}
try:
response["transcription"] = recognizer.recognize_google(audio)
except sr.RequestError:
response["success"] = False
response["error"] = "API unavailable"
except sr.UnknownValueError:
response["error"] = "Unable to recognize speech"
return response
if __name__ == "__main__":
Tk().withdraw() # we don't want a full GUI, so keep the root window from appearing
filename = askopenfilename() # show an "Open" dialog box and return the path to the selected file
recognizer = sr.Recognizer()
audioFile = sr.AudioFile(filename)
text = recognize_speech_from_audio_file(recognizer, audioFile) # save transcription to variable
with open("transcription.txt","r+") as f1:
f1.write(text) # write text to file
f1.close() # close file
и вот обратная связь
Traceback (most recent call last):
File "C:\Users\15017\PycharmProjects\SpeechRecog\venv\lib\site-packages\speech_recognition\__init__.py", line 387, in get_wav_data
wav_writer.writeframes(raw_data)
File "C:\Users\15017\AppData\Local\Programs\Python\Python37-32\lib\wave.py", line 438, in writeframes
self.writeframesraw(data)
File "C:\Users\15017\AppData\Local\Programs\Python\Python37-32\lib\wave.py", line 433, in writeframesraw
self._file.write(data)
MemoryError
Во время обработки вышеуказанного исключения произошло другое исключение:
Traceback (most recent call last):
File "C:/Users/15017/PycharmProjects/SpeechRecog/SpeechRecognition.py", line 37, in <module>
text = recognize_speech_from_audio_file(recognizer, audioFile)
File "C:/Users/15017/PycharmProjects/SpeechRecog/SpeechRecognition.py", line 23, in recognize_speech_from_audio_file
response["transcription"] = recognizer.recognize_google(audio)
File "C:\Users\15017\PycharmProjects\SpeechRecog\venv\lib\site-packages\speech_recognition\__init__.py", line 828, in recognize_google
convert_width=2 # audio samples must be 16-bit
File "C:\Users\15017\PycharmProjects\SpeechRecog\venv\lib\site-packages\speech_recognition\__init__.py", line 444, in get_flac_data
wav_data = self.get_wav_data(convert_rate, convert_width)
File "C:\Users\15017\PycharmProjects\SpeechRecog\venv\lib\site-packages\speech_recognition\__init__.py", line 390, in get_wav_data
wav_writer.close()
File "C:\Users\15017\AppData\Local\Programs\Python\Python37-32\lib\wave.py", line 447, in close
self._patchheader()
File "C:\Users\15017\AppData\Local\Programs\Python\Python37-32\lib\wave.py", line 495, in _patchheader
curpos = self._file.tell()
ValueError: I/O operation on closed file.
Process finished with exit code 1