Услуга транскрипции в прямом эфире 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).