Проблема с распознаванием речи и Shutil в предложении Try - PullRequest
0 голосов
/ 16 сентября 2018

Я пытаюсь использовать распознавание речи, чтобы пройтись по папкам и назвать все файлы, основываясь на голосовом контенте.Этот код в настоящее время работает до тех пор, пока аудиофайлы находятся внутри папок, которые находятся внутри родительской папки Audio Files (строка 13).Если в папке «Audio Files» есть аудиофайл, я получаю «Ошибка имени», поскольку переменная «text» (последняя строка) не определена.Это имеет смысл, но странным является то, что этот код работает в прежней ситуации.

Основная проблема, с которой я столкнулся, заключается в предложении try.Когда функция shutil.move () не закомментирована, вместо переименования аудиофайлов она создает дубликат и затем переименовывает его, тогда как когда эта функция находится за пределами предложения try (последняя строка), она переименовываетфайлы без дублирования.После выполнения первых двух строк предложения try вместо выполнения третьей вместо этого выполняется ожидание.

Я не уверен, почему это происходит.Моя цель - просто переименовать все аудиофайлы в любой папке без дубликатов.

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')

1 Ответ

0 голосов
/ 16 сентября 2018
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
...