Я имею в виду довольно амбициозный проект и хотел изложить свой мыслительный процесс, чтобы увидеть, выполним ли этот проект.
Во время радиопередачи радиоведущий обычно выдает билеты, если вы звоните #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)
блокируется.Я не уверен, что это связано с тем, что иногда из файла просто воспроизводится музыка. - Есть ли способ отфильтровать любую неречевую (то есть музыку без слов)
- Можно ли транскрибировать звук в реальном времени без записи в файл?Таким образом, мне не нужно разбивать его на куски, копировать файл для чтения, а затем анализировать поступающее.
Есть ли лучший подход, который я могу использовать для достижения этого проекта?