0

ラジオ局をストリーミングし、時間ベースで別のチャンネルに切り替えてから、一定期間後に元のストリームに戻るストリーミング アプリがあります。ライブ ストリーム オーディオに、1 時間に 1 回発生し、一定期間切り替える特定のサウンドが含まれているかどうかを認識する最良の方法は何でしょうか。

この問題のサブセットは、 からのオーディオのライブ ストリーム内のオーディオ クリップをどのように認識するかですpython-vlcsample.mp3最後の 10 秒には、サンプルに含まれるものが含まれているとします。

保存された 2 つの異なる mp3 (つまり、FFT を使用) に対してそれを行う方法は知っていますが、python-vlc からのライブストリームでそれを行う方法はわかりません。多くのパッケージではオーディオのストリーミングが許可されておらず、録音されたファイルのみが許可されているため、現在、ライブストリームにアクセスして波形を比較することさえできないようです。

問題の主な機能はここにありますが、これまでのパッケージはここにあります:


    def set_station(self,station):

        # Return if already playing selected station
        if station == self.playing:
            return

        if station == "JJ":
            self.url = 'http://live-radio01.mediahubaustralia.com/4DJW/mp3/'
        elif station == "JJJ":
            self.url = 'http://live-radio01.mediahubaustralia.com/4TJW/mp3/'

        # Define VLC media
        self.media=self.instance.media_new(self.url)
        #self.media.add_option("sout=file/ts:sample.mp3")

        # Set player media
        self.player.set_media(self.media)
        
        # Play the media
        self.player.play()
        
        # Set playing station
        self.playing = station

    def switcher(self):

        # Current time and hour
        current_time = dt.datetime.now()
        current_hour = int(current_time.hour)

        # Check if time is between 59th minute and 3rd minute after the hour
        mhour = is_now_between_time_periods(dt.time(current_hour,59,50), 
                                            dt.time(current_hour,3,30), 
                                            current_time.time())
        
        # Is between 6 and 9am create a half hour window
        if current_hour >= 6 and current_hour <= 9:
            mhalf = is_now_between_time_periods(dt.time(current_hour,30,50), 
                                                dt.time(current_hour,33,30), 
                                                current_time.time())
            mwindow = mhalf or mhour
        else:

            mwindow = mhour

        # //////////////////////////////////////////
        # Rather than time based, I'm after a parsing 
        # of the stream to find a sequence of 
        # audio similar to e.g. "sample.mp3".
        # e.g. if cosine_similarity(sample.mp3",stream) > 0.7:
        # //////////////////////////////////////////

        # If satisfied then switch to Triple J (JJJ) 
        if mwindow:
            self.set_station("JJJ")
        else:
            self.set_station("JJ")

1 つの考えは、self.media.add_option("sout=file/ts:stream.mp3")python-vlc 内のモジュールを使用してオーディオ ファイルにストリーミングし、そのファイルを事前に解析する遅延を使用して再生することでしたが、常により多くのデータを取り込んでいるため、to file ストリームをロードできませんちゃんと。

4

0 に答える 0