Использование распознавания речи для создания заметок
В этой статье мы узнаем, как конвертировать аудиоразговоры в Slack в письменные заметки. В Slack есть функция, с помощью которой пользователи могут делиться аудио- или видеозаписями с членами своей команды. Это отличный способ общения между коллегами. Есть хорошая поговорка, которая мне нравится: «Картинка стоит тысячи слов». Иногда объяснить что-то словами может быть очень сложно или, другими словами, это может занять больше времени, чем нужно. Итак, вот вам и сила аудио- и видеосообщений.
Как технический энтузиаст, я решил объединить эту классную функцию Slack с машинным обучением. Всегда есть место для развития. Все дело в том, как вы подходите к проблеме и вырабатываете решение.
Одна из причин, по которой мне нравится работать над проектами по машинному обучению, заключается в том, что я могу комбинировать с ним разные области/темы. По моему опыту, таким образом обучение становится более постоянным и радостным.
Не теряя времени, приступим!
Оглавление:
- Начало работы
- Шаг 1. Библиотеки
- Шаг 2. Запись звука в Slack
- Шаг 3. Загрузка аудио в API
- Шаг 4 — Преобразование речи в текст
- Последний шаг — экспорт результата
Начиная
СборкаAI
В этом проекте мы будем использовать API AssemblyAI Speech-to-Text. Это очень хорошо обученный API машинного обучения. Это бесплатно. Мы получим уникальный ключ API после создания учетной записи. Мы будем использовать этот ключ API для использования услуг и функций.
У AssemblyAI есть отличные сервисы и функции, которые мы можем использовать для многих вещей, от обнаружения темы до модерации контента. В сегодняшнем проекте мы будем использовать преобразование речи в текст с функцией автоматического суммирования. Поскольку наша цель — делать заметки, эта функция лучше всего соответствует нашим потребностям.
Блокнот Юпитера
Нам нужна среда кодирования для написания нашего кода. Я собираюсь использовать Jupyter Notebook. Мне это нравится, потому что у него открытый исходный код, и он позволяет мне запускать коды как разные блоки. Использование блоков кода — отличная функция, особенно при работе над проектами Data Science и Machine Learning.
Шаг 1 — Библиотеки
Если вы раньше работали над проектом машинного обучения, я уверен, что вы использовали некоторые библиотеки Python. Если это ваш первый проект — волноваться не о чем; их так просто установить и использовать.
Вот библиотеки Python, которые нам понадобятся для этого проекта: requests, time, sys. Все это встроенные библиотеки; поэтому нам не нужно их устанавливать.
Давайте продолжим и импортируем их в нашу программу.
import requests import time import sys
Шаг 2 — Slack аудиозапись
На этом этапе мы расскажем, как записать аудиоклип в Slack. А затем мы загрузим эту запись на нашу машину.
Итак, что такое Slack?
Slack — это приложение для обмена сообщениями для предприятий, которое позволяет людям получать необходимую им информацию. Объединяя людей для работы в единую команду, Slack меняет способ общения в организациях.
Ссылка:
Slack можно использовать как веб-приложение или программу, которую можно установить на свое устройство.
Вот скриншот моего личного примера рабочего пространства. Вы можете создать свой собственный, используя свой адрес электронной почты.
Теперь давайте продолжим и запишем аудиоклип. Функция записи звука доступна бесплатно с 30-дневной пробной версией.
Я только что записал звуковое сообщение, нажав на кнопку микрофона. Мы видим варианты, доступные для звукового сообщения, на изображении ниже. Мы продолжим и нажмем «Загрузить». Таким образом, мы можем запустить нашу программу машинного обучения на этом аудиоклипе.
Шаг 3 — Загрузка аудио в API
На этом этапе мы загрузим загруженный звук в облако. Преобразование речи в текст будет происходить в облаке AssemblyAI. Никакое дополнительное программное обеспечение или программа не должны быть установлены на нашей машине. Все, что нам нужно, это ключ API.
audio_data = "slack_recording.wav" def upload_audio(audio_data, chunk_size=5242880): with open(audio_data, 'rb') as audio_file: while True: data = audio_file.read(chunk_size) if not data: break yield data headers = { "authorization": "Our API key goes here." } response = requests.post('https://api.assemblyai.com/v2/upload', headers=headers, data=upload_audio(audio_data))
- audio_data — это путь к файлу аудиозаписи.
- Функция upload_audio считывает аудиофайл с нашего компьютера.
- headers — это словарь, в который мы передаем наш ключ API.
- response — это переменная, которой мы присваиваем возвращаемое значение почтового запроса. Мы достигаем API через этот почтовый запрос.
После запуска этого блока кода давайте распечатаем переменную ответа.
print(response.json())
Вот что я получил:
{'upload_url': 'https://cdn.assemblyai.com/upload/0fe5e955-faf0-436f-aa42-4183ed05265e'}
Шаг 4 — Преобразование речи в текст
Почти готово! Этот шаг преобразует загруженный аудиофайл в письменный текст. И во время этой транскрипции мы также будем использовать функцию автоматического суммирования API. Вместо того, чтобы иметь весь звук в виде текста, мы получим сводную версию всего контекста.
Следующий блок кода отправит наш запрос в API:
speech_to_text_api = "https://api.assemblyai.com/v2/transcript" data = { "audio_url": "the upload url address goes here", "auto_chapters": "TRUE", } headers = { "authorization": "Our API key goes here.", "content-type": "application/json" } response = requests.post(speech_to_text_api, json=data, headers=headers)
После запуска этого блока кода давайте продолжим и проверим ответ.
print(response.json)
Наш запрос поставлен в очередь и ожидает обработки. Скопируем значение id этого запроса; он понадобится нам для проверки статуса запроса.
Последний шаг — экспорт результата
На этом шаге мы проверим через API запрос, который мы сделали ранее.
request_url = "https://api.assemblyai.com/v2/transcript/ the request id from the previous step goes here" headers = { "authorization": "Our API key goes here." } response = requests.get(request_url, headers=headers) summarized_text = response.json()['chapters'] summarized_text
Вот краткий вывод моего звукового сообщения:
Идеальный! Теперь давайте экспортируем эту сводку в виде текстового документа в нашу папку.
file = open("summary_text.txt","w") file.write("Summary of the audio message is as follows: \n") file.write(summarized_text[0]['summary']) file.close()
Поздравляю! Мы создали программу, которая может обобщать для нас аудиосообщения. Функция Slack audio — это лишь один пример того, где мы можем реализовать этот проект. Не стесняйтесь попробовать его с различными аудиоклипами и посмотреть, как он работает. Это отличный способ получить важные моменты из аудио.
Приятно видеть, как машинное обучение применяется в реальном мире — надеюсь, вам понравилось читать эту статью и вы узнали сегодня что-то новое.
Меня зовут Бехик Гювен, и я люблю делиться историями о программировании, образовании и жизни. Подпишитесь на мой контент, чтобы оставаться вдохновленным. Тай,
Если вам интересно, какие статьи я пишу, вот некоторые из них:
- Создание распознавателя лиц с помощью Python
- Пошаговое руководство — построение модели прогнозирования в Python
- Создание распознавателя речи и эмоций с использованием Python
Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter и LinkedIn. Присоединяйтесь к нашему сообществу Discord.