Проект Python для потокового аудио и распознавания речи / текста - PullRequest
0 голосов
/ 25 октября 2018

Я имею в виду довольно амбициозный проект и хотел изложить свой мыслительный процесс, чтобы увидеть, выполним ли этот проект.

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

  • Прослушивание URL-адреса радиопотока (TuneIn Radio)
  • Анализ входных данных путем извлечения ключевых слов, которые могут заставить слушателя поверить, что концертный призпоявляется возможность (например: «Позвоните в 15:40, чтобы получить шанс выиграть билеты, чтобы увидеть The Who!»).
  • Сделайте вызов Twilio на номер радиостанции и перезвоните на свой мобильный телефон.при успешном вызове.

Я начал возиться с этим и придумал несколько фрагментов кода, которые, я считаю, имеют правильное направление.У меня также есть некоторые проблемы, о которых я упомяну после фрагментов кода.

До сих пор я придумал процесс, использующий библиотеку requests для прослушивания URL-адреса потока и записи получаемого контента в.wav файл.Оттуда Google Speech Recognizer проанализирует аудиофайл и распечатает текст.

import requests 

stream_url = "http://18073.live.streamtheworld.com:3690/WDHAFM_SC?DIST=TuneIn&TGT=TuneIn&maxServers=2&gender=m&ua=RadioTime&ttag=RadioTime"

r = requests.get(stream_url, stream=True)

f = open("audio.wav", "wb")

for block in r.iter_content(1024):
    f.write(block)

После запуска этого сценария a Ctrl-C аудиофайл сохраняется и может быть прослушан.Затем я должен использовать ffmpeg для преобразования файла в истинное значение .wav.По какой-то причине f.write сохраняет его с кодеком mp3.Это необходимо, чтобы Google Speech Recognition мог правильно загрузить файл.

import speech_recognition as sr

audio_file = "audio.wav"

r = sr.Recognizer()
af = sr.AudioFile(audio_file)
with af as source:
    audio = r.record(source, duration=4)

text = r.recognize_google(audio)
print(text)

Несколько проблем:

  • Иногда text = r.recognize_google(audio) блокируется.Я не уверен, что это связано с тем, что иногда из файла просто воспроизводится музыка.
  • Есть ли способ отфильтровать любую неречевую (то есть музыку без слов)
  • Можно ли транскрибировать звук в реальном времени без записи в файл?Таким образом, мне не нужно разбивать его на куски, копировать файл для чтения, а затем анализировать поступающее.

Есть ли лучший подход, который я могу использовать для достижения этого проекта?

...