我正在尝试使用语音识别来浏览文件夹并根据语音内容命名所有文件。只要音频文件位于父文件夹“音频文件”(第13行)内的文件夹内,此代码就可以正常工作。如果'Audio Files'文件夹中有音频文件,我会收到名称错误,因为未定义'text'变量(最后一行)。这是有道理的,但奇怪的是这段代码适用于前一种情况。
我遇到的主要问题是'try'子句。当没有注释掉shutil.move()函数时,它不是重命名音频文件,而是复制然后重命名那个,而当这个函数在'try'子句(最后一行)之外时,它重命名文件没有重复。执行'try'子句的前两行后,不执行第三行,而是执行expect子句。
我不确定为什么会这样。我的目标只是让所有音频文件在任何文件夹中重命名,而不会有重复。
import speech_recognition as sr
import sys, os, shutil, time
#folder_name = sys.argv[1]
#filename = sys.argv[1]
os.chdir(r'C:\Users\Sonorityscape\Desktop')
r = sr.Recognizer()
for root, dirs, files in os.walk('c:\\users\\sonorityscape\\desktop\\Audio Files'):
for file in files:
audio_file = os.path.join(root, file)
parent_folder = os.path.basename(root)
if os.path.isfile(audio_file):
with sr.AudioFile(audio_file) as source:
audio = r.listen(source)
try:
text = r.recognize_google(audio)
#shutil.move(audio_file, root + '\\' + parent_folder + ' - ' + text.capitalize() + '.wav')
print(file + ' ---> {} - {}'.format(parent_folder, text.capitalize()) + '.wav')
except:
print(file + ' ---> Sorry, could not recongnize anything.')
shutil.move(audio_file, root + '\\' + parent_folder + ' - ' + text.capitalize() + '.wav')
import speech_recognition as sr
import sys, os, shutil, time
#folder_name = sys.argv[1]
#filename = sys.argv[1]
os.chdir(r'C:\Users\Sonorityscape\Desktop')
r = sr.Recognizer()
def audio_file_rename(audio_file):
with sr.AudioFile(audio_file) as source:
audio = r.listen(source)
try:
text = r.recognize_google(audio)
return text
except:
print(file + ' ---> Sorry, could not recongnize anything.')
for root, dirs, files in os.walk('c:\\users\\sonorityscape\\desktop\\Audio Files'):
for file in files:
audio_file = os.path.join(root, file)
parent_folder = os.path.basename(root)
if os.path.isfile(audio_file):
text = audio_file_rename(audio_file)
if text != None:
shutil.move(audio_file, root + '\\' + parent_folder + ' - ' + text.capitalize() + '.wav')
print(file + ' ---> {} - {}'.format(parent_folder, text.capitalize()) + '.wav')
else:
continue