Использование распознавания речи для создания заметок

В этой статье мы узнаем, как конвертировать аудиоразговоры в 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 — это лишь один пример того, где мы можем реализовать этот проект. Не стесняйтесь попробовать его с различными аудиоклипами и посмотреть, как он работает. Это отличный способ получить важные моменты из аудио.

Приятно видеть, как машинное обучение применяется в реальном мире — надеюсь, вам понравилось читать эту статью и вы узнали сегодня что-то новое.

Меня зовут Бехик Гювен, и я люблю делиться историями о программировании, образовании и жизни. Подпишитесь на мой контент, чтобы оставаться вдохновленным. Тай,

Если вам интересно, какие статьи я пишу, вот некоторые из них:

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter и LinkedIn. Присоединяйтесь к нашему сообществу Discord.