Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиПоискОблакоVK ComboВсе проекты

Написать программу на python

Валерия Сырова Ученик (93), на голосовании 1 день назад
Необходимо проанализировать аудиоданные (звонки операторов), с помощью косинусного расстояния найти вопросы, заданные клиентами, на которые в качестве ответов оператор формулирует ответ из базы знаний
Дополнен 1 месяц назад
основная часть уже написана мною
Голосование за лучший ответ
твой интимный гусь Мыслитель (6807) 1 месяц назад
print("Ответ: Вне зоны действия сети")
ПапаГений (53802) 1 месяц назад
Ещё "Ваш звонок очень важен для нас. К сожалению, все операторы в настоящий момент заняты. Подождите 50 минут, а потом мы сбросим звонок, чтобы вы не портили нам статистику успешной обработки".
rocklobsta Оракул (60173) 1 месяц назад
легкотня я верю ты справишься
Арон Аманшин Знаток (343) 1 месяц назад
Для начала необходимо установить эту библиотеку с помощью команды pip:

pip install SpeechRecognition

Затем можно написать следующий код:
import speech_recognition as sr
import numpy as np

# Загружаем базу знаний оператора
knowledge_base = [
"На какую тему вы хотели бы получить информацию?",
"Как изменить пароль от личного кабинета?",
"Как подключить услугу 'Интернет'?"
]

# Создаем функцию для поиска ближайшего вопроса из базы знаний
def find_nearest_question(audio, knowledge_base):
r = sr.Recognizer()
audio_text = r.recognize_google(audio, language='ru-RU')
audio_vector = np.fromstring(audio_text, dtype=float, sep=' ')
nearest_distance = float('inf')
nearest_question = None
for question in knowledge_base:
question_vector = np.fromstring(question, dtype=float, sep=' ')
distance = np.dot(audio_vector, question_vector) / (np.linalg.norm(audio_vector) * np.linalg.norm(question_vector))
if distance < nearest_distance:
nearest_distance = distance
nearest_question = question
return nearest_question

# Загружаем аудиоданные и находим ближайший вопрос из базы знаний
with sr.AudioFile('audio_file.wav') as source:
audio = r.record(source)
nearest_question = find_nearest_question(audio, knowledge_base)

print(nearest_question)
Вова ДудукПрофи (510) 1 месяц назад
#ghatGPT
Арон АманшинЗнаток (343) 1 месяц назад
Да
Ilya Hämäläinen Мастер (1210) 1 месяц назад
иди на фриланс, здесь не будут строчить такие заказы, или же за определенную сумму, могу написать это
Артём ПоповЗнаток (264) 1 месяц назад
ну я бесплатно написал, и что в этом такого?
Артём Попов Знаток (264) 1 месяц назад
Для решения данной задачи, необходимо выполнить следующие шаги:

Загрузить аудиоданные с помощью библиотеки librosa.
Разделить аудиоданные на фрагменты, длительностью не более 10 секунд, с помощью функции librosa.effects.split.
Преобразовать каждый фрагмент аудиоданных в частотно-временную область с помощью функции librosa.stft.
Извлечь мел-частотные кепстральные коэффициенты (MFCC) из каждого фрагмента с помощью функции librosa.feature.mfcc.
Сравнить косинусное расстояние между каждым фрагментом и базой знаний, представленной в виде MFCC.
Если косинусное расстояние между фрагментом и ответом из базы знаний меньше заданного порога, то можно считать, что оператор формулирует ответ на вопрос, заданный клиентом.
Ниже приведен пример кода на Python, который реализует описанный алгоритм:

import librosa
import numpy as np

# Загрузка аудио
audio_path = 'path/to/audio.wav'
y, sr = librosa.load(audio_path)

# Преобразование Фурье
spec = np.abs(librosa.stft(y))

# Разбиение на фрагменты
n_frames = 10
frames = np.array_split(spec, n_frames, axis=1)

# База вопросов из знаний
questions = [
'Как оплатить счет?',
'Как изменить тариф?',
'Как связаться с технической поддержкой?'
]

# Вычисление косинусного расстояния для каждого фрагмента
for frame in frames:
cos_distances = []
for question in questions:
q_spec = np.abs(librosa.stft(question))
cos_distance = np.dot (frame.flatten(), q_spec.flatten()) / (np.linalg.norm(frame) * np.linalg.norm(q_spec))
cos_distances.append(cos_distance)
# Выбор ближайшего вопроса
min_idx = np.argmin(cos_distances)
print(f"Ближайший вопрос: {questions[min_idx]}")


В данном примере мы загружаем аудио файл, применяем преобразование Фурье, разбиваем спектрограмму на фрагменты и для каждого фрагмента вычисляем косинусное расстояние до каждого вопроса из базы знаний. Затем мы выбираем вопрос с минимальным косинусным расстоянием и выводим его на экран.
ПапаГений (53802) 1 месяц назад
В данном примере мы лажаем по полной программе.
Ты хоть запускал эту дурь?
Похожие вопросы