2016-04-16 257 views
0

私はWAVファイルをストリーミングしようとしていますが、サウンドチャンネルの1つを取り除くので、1つのスピーカーでのみ再生され、音量は小さくなります。PyAudioでストリーミング中に音量を変更します

私はPyAudioを使用していた理由は、私は特定のスピーカー(左/右)

  • 割り込み演奏のうち、一度
  • プレイ音で

    • ストリームに複数のファイルにできるようにする必要がありますということですのサウンドファイル

    これらの機能を許可する他のPythonライブラリを見つけることができませんでした。

    私は次のコードをPyAudioのストリーミングの例から修正しました。 1つのスピーカーからWAVファイルを再生しますが、どのような方法でもボリュームを変更する方法を見つけることができませんでした。

    """PyAudio Example: Play a wave file.""" 
    
    import pyaudio 
    import wave 
    import sys 
    
    CHUNK = 1024 
    
    if len(sys.argv) < 2: 
        print("Plays a wave file.\n\nUsage: %s filename.wav" % sys.argv[0]) 
        sys.exit(-1) 
    
    wf = wave.open(sys.argv[1], 'rb') 
    
    # instantiate PyAudio (1) 
    p = pyaudio.PyAudio() 
    
    # open stream (2) 
    sampwidth = wf.getsampwidth() 
    stream = p.open(format=p.get_format_from_width(sampwidth), 
           channels=wf.getnchannels(), 
           rate=wf.getframerate(), 
           output=True) 
    
    # read data 
    data = bytearray(wf.readframes(CHUNK)) 
    
    # play stream (3) 
    while len(data) > 0: 
        #remove left channel 
        for i in range(0, len(data)): 
         if i % (sampwidth*2) < sampwidth: 
          data[i] = 0 
    
        #reduce volume by 50% 
        for i in range(0, len(data)): 
         # use magic??? 
         pass 
    
        stream.write(bytes(data)) 
        data = wf.readframes(CHUNK) 
        if len(data) > 0: 
         data = bytearray(data) 
    
    # stop stream (4) 
    stream.stop_stream() 
    stream.close() 
    
    # close PyAudio (5) 
    p.terminate() 
    

    誰でも私に指示を与えることができれば、私はそれを感謝します。私は答えがWAVファイルが現在持っているよりもどのようにフォーマットされているかをよりよく理解する必要があるように感じます。私はdata[i] = int(data[i]/2)と他の類似した単純な算術を試しましたが、出力は単純に歪んだので、WAVファイル形式は私が信じているほどシンプルではないことがわかりました。

  • +1

    'data'が' bytearray'であり、それらの演算が定義されていないため単純な算術演算が機能しません。(数字ではなくバイトであるため、意味がありません)あなたはNumPyを使用しますか? NumPy配列を使用すると、そのような操作が可能になります。 – Matthias

    答えて

    0

    pydubをチェックアウトするとよいでしょう。それはpyaudioを使用し、ボリュームを変更する簡単な方法があります。

    関連する問題