我脑子里有一个雄心勃勃的项目,想布局我的思考过程,看看这个项目是否可行。
在广播期间,如果您在指定的时间段内是#X呼叫者,则广播主持人通常会发出票证。由于我们大多数人都在工作,不能总是听收音机说这些机会,所以我想:“也许我可以编写一个程序来做到这一点”。这就是我的想法:
我已经开始对此进行弄乱,并提出了一些我认为方向正确的代码片段。在代码片段之后,我还会提到一些担忧。
到目前为止,我想出了一个使用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)
运行此脚本后,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)
会锁定。我不确定这是否是由于有时音乐只是从文件中播放而引起的。我是否可以采用更好的方法来实现此项目?