Python音频流和语音/文本识别项目

时间:2018-10-25 20:29:19

标签: python speech-recognition audio-streaming speech-to-text google-speech-api

我脑子里有一个雄心勃勃的项目,想布局我的思考过程,看看这个项目是否可行。

在广播期间,如果您在指定的时间段内是#X呼叫者,则广播主持人通常会发出票证。由于我们大多数人都在工作,不能总是听收音机说这些机会,所以我想:“也许我可以编写一个程序来做到这一点”。这就是我的想法:

  • 收听广播流URL(TuneIn广播)
  • 通过提取关键字来分析传入的数据,这些关键字可能会使听众相信即将出现音乐会奖的机会(例如:“下午3:40致电以有机会赢取门票观看The Who!”)。 / li>
  • 拨打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)

运行此脚本后,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)会锁定。我不确定这是否是由于有时音乐只是从文件中播放而引起的。
  • 有没有一种方法可以过滤掉所有非语音(即没有单词的音乐)
  • 是否可以实时转录音频,而无需写入文件?这样,我就不必将其分解为多个块,复制文件以进行读取,然后分析其中的内容。

我是否可以采用更好的方法来实现此项目?

0 个答案:

没有答案