Env: pip install Python-pptx pip install SpeechRecognition pip install time pip install django
Веб страница:
- Открывается страница, на которой выбирается презентация для выступления и указывается временной порог, в который необходимо уложиться.
- После нажатию на кнопку "Начать" открывается страница с первым слайдом презентации и кнопками для управления.
- Для того, чтобы начать тренировку, необходимо нажать на кнопку "Старт". После этого начнется обратный отсчет времени.
- Если пользователь не уложился в заданный временной порог, то тренировка не останавливается, а продолжается. Причем таймер идет с отрицательным значением
- Для того, чтобы закончить тренировку, необходимо нажать на кнопку "Стоп". После этого выведется окошко с результатами.
Работа парсера:
- Подключение библиотеки python-pptx
- Для получения списка слайдов используем функцию slides(), в результате получаем список слайдов.
- Затем делаем словарь слайд - текст или наоборот)
Список слайдов у нас есть, проходим по нему и в для каждого слайда выполняем код:
text_slide = " " for shape in slide.shapes: if not shape.has_text_frame: continue text_slide += shape.text_frame + "\n"
И добавляем text_slide в словарь вместе с текстом
Работа модуля обработки звука:
- Подключается библиотека speech_recognition
- Начинается запись речи, которая продолжается до отстановки речи пользователя
- Записанная речь отправляется на обработку с помощью recognize_google_api В результате получаем переменную типа String с распознанным текстом
Работа модуля анализа полученных данных:
-
def massWord(mass):
- На вход получаем список записанных аудиофайлов
- Каждый элемент список отправляется на обработку функции из модуля обработки звука.
- На выходе получаем список из сказанного текста на каждом слайде
-
def wordsOnSlide(listWord):
- На вход получаем список полученный из функции massWord
- Подсчитываем количество слов в каждом элементе этого списка
- На выходе список из количества слов, сказанного во время просмотра презентации
-
def simpleSpeed(time, countWord): Реализован простой подсчет скорости, т.е. считаем, что в процессе показа одного слайда скорость постоянная
- На вход получаем список секунд, в которые заканчивается показ слайдов и список из wordsOnSlide
- Для получения списка скоростей говорящего на каждом слайде проходимся по списку time и считаем, сколько секунд затратили на данный слайд. В этом же цикле делим число сказанных слов на количество секунд и получаем скорость на данном слайде.
- Строим график скорость с помощью полученных данных.
-
def SpeedReport(time, countWord):
- На вход получаем списк секунд, в которые заканчивается данный слайд и список из wordsOnSlide
- Подсчитываем количество секунд, которое тратится на каждый слайд.
- Находим среднее количество секунд, потраченное на один слайд
- Строим график, на котором показано среднее количество секунд (красный пунктир) и количество секунд, потраченное на каждый слайд
-
def comparisionOfTheme(dict, listWord):
- На вход получаем список с текстом из слайдов и список поллученный из massWord
- Для каждого слайда:
- Составляем словарь, в котором ключом является слово, а значением количество таких слов в тексте на слайде
- Составляем словарь, в котором ключом является слово, а значением количество таких слов в сказанном тексте пользователем на данном слайде
- Производим сопоставление этих двух списков и подсчитываем количество слов, которое встречается в тексте на слайде и в сказанном пользователем тексте
- Подсчитываем процент сказанных слов со слайда
6ca9a07fd6fecc8c0db5868be85381af754f313c