Транскрибирование радиопередач с помощью Node.js

Услуга транскрипции в прямом эфире Deepgram находит множество применений — от субтитров на встречах и мероприятиях до создания помощи на дому и поддержки операторов колл-центров путем подбора ключевых слов.

Сегодня вы будете использовать Deepgram JavaScript SDK для обеспечения прямой транскрипции радиопередач и сохранения произнесенных слов в файл, который затем можно будет проанализировать.

Перед началом работы

Вам понадобится API-ключ Deepgram — получите его здесь.

Создайте новую директорию, откройте ее в редакторе кода и перейдите в нее в терминале. Инициализируйте новый проект Node.js и установите зависимости этого проекта:

npm init -y
npm install cross-fetch @deepgram/sdk
Войдите в полноэкранный режим Выйти из полноэкранного режима

cross-fetch используется для того, чтобы сделать HTTP-запросы более простыми в ваших Node.js проектах. Альтернативы включают axios, got и httpie — используйте то, что подходит вам, или библиотеку по умолчанию http в Node.js, которая не требует никаких зависимостей.

Создайте файл index.js и откройте его в вашем редакторе кода. Инициализируйте зависимости проекта:

const fetch = require('cross-fetch')
const { Deepgram } = require('@deepgram/sdk')
const fs = require('fs')
Войдите в полноэкранный режим Выйдите из полноэкранного режима

Создание сеанса транскрипции Deepgram Live

Инициализируйте Deepgram JavaScript SDK и создайте новую сессию живой транскрипции:

const deepgram = new Deepgram('YOUR_DEEPGRAM_API_KEY')
const deepgramLive = deepgram.transcription.live({
  punctuate: true,
  tier: 'enhanced'
})
Войти в полноэкранный режим Выйти из полноэкранного режима

В этой сессии используются две функции — пунктуация и ярус. Узнайте больше о таких функциях Deepgram, как редактирование, диаризация и язык.

Получение данных в реальном времени с радиостанций

Убедитесь, что у вас есть прямой аудиопоток для радиостанции. Хороший способ проверить это — открыть URL в браузере — вы должны увидеть только встроенный в браузер аудиоплеер без сопутствующей веб-страницы.

Вот несколько URL-адресов, которые вы можете попробовать:

  • BBC Radio 4 (работает за пределами Великобритании): http://stream.live.vc.bbcmedia.co.uk/bbc_radio_fourlw_online_nonuk.
  • BBC Radio 4 (работает в Великобритании): http://stream.live.vc.bbcmedia.co.uk/bbc_radio_fourlw
  • France Inter: https://direct.franceinter.fr/live/franceinter-midfi.mp3

Если вы пользуетесь французским каналом, не забудьте добавить language: fr в параметры сессии Deepgram.

const url = 'http://stream.live.vc.bbcmedia.co.uk/bbc_radio_fourlw_online_nonuk'

fetch(url).then(r => r.body).then(res => {
  res.on('readable', () => {
    const data = res.read()
    console.log(data)
  })
})
Вход в полноэкранный режим Выход из полноэкранного режима

Запустите ваш код с помощью node index.js, оставьте его работать на пару секунд и остановите его с помощью ctrl+c. Вы должны увидеть кучу буферов, записанных в консоль.

Это то, что вы хотите увидеть — эти буферы аудиоданных могут быть отправлены непосредственно в Deepgram.

Расшифровка радиостанции

Замените console.log(data) на следующее, чтобы отправить буферы в Deepgram, если соединение все еще открыто:

if(deepgramLive.getReadyState() === 1) {
    deepgramLive.send(data)
}
Войти в полноэкранный режим Выйти из полноэкранного режима

В нижней части index.js, ниже всего остального кода, добавьте этот код для прослушивания возвращаемых транскриптов:

deepgramLive.addListener('transcriptReceived', (message) => {
  const data = JSON.parse(message)
  const transcript = data.channel.alternatives[0].transcript
  if(transcript) {
    console.log(transcript)
  }
})
Войти в полноэкранный режим Выйти из полноэкранного режима

Запустите код заново, и вы увидите транскрипты в терминале.

Сохранение новых расшифровок в файл

Чтобы сохранить расшифровки в файл, сначала нужно создать поток записи, а затем записать в него содержимое. В верхней части файла, чуть ниже операторов require, создайте поток:

const stream = fs.createWriteStream('output.txt', { flags: 'a' })
Войти в полноэкранный режим Выйти из полноэкранного режима

Флаг a откроет файл специально для добавления новых данных. Если он не существует, он будет создан автоматически.

Замените console.log(transcript) на следующее:

stream.write(transcript + ' ')
Войти в полноэкранный режим Выйти из полноэкранного режима

Это добавит новый транскрипт в конец существующего файла, обеспечивая пробел между каждым элементом.

Запустите ваш код снова, подождите несколько секунд, а затем остановите его. Посмотрите на новый файл output.txt, и вы увидите большой блок текста, который затем может быть сохранен в базе данных для соответствия или дальнейшего анализа.

В заключение

Полный код находится здесь:

const fetch = require('cross-fetch')
const { Deepgram } = require('@deepgram/sdk')
const fs = require('fs')
const stream = fs.createWriteStream('output.txt', { flags:'a' })

const deepgram = new Deepgram(deepgramApiKey)
const deepgramLive = deepgram.transcription.live({
  punctuate: true,
  tier: 'enhanced'
})

const url = 'http://stream.live.vc.bbcmedia.co.uk/bbc_radio_fourlw_online_nonuk'

fetch(url).then(r => r.body).then(res => {
  res.on('readable', () => {
    const data = res.read()
    if(deepgramLive.getReadyState() === 1) {
      deepgramLive.send(data)
    }
  })
})

deepgramLive.addListener('transcriptReceived', (message) => {
  const data = JSON.parse(message)
  const transcript = data.channel.alternatives[0].transcript
  if(transcript) {
    stream.write(transcript + ' ')
  }
})
Вход в полноэкранный режим Выход из полноэкранного режима

Если у вас возникли вопросы, пожалуйста, свяжитесь с нами по электронной почте (devrel@deepgram.com) или через Twitter (@DeepgramDevs).

Оцените статью
devanswers.ru
Добавить комментарий