Pythonは音の再生と録音を実現します。


Python言語はもう何でもできます。今日はPythonを使ってオーディオファイルを録音したり、再生したりします。
以下はオーディオを再生して録音できるPythonの第三者ライブラリです。
  • plysoundは、MP 3とWAVをサポートしています。今は簡単な再生だけをサポートしています。
  • simpleaudioはWAVをサポートし、ファイルがまだ再生されているかどうかを確認する機能を提供します。
  • windsound、WAVを支持して、windowsだけを支持します。
  • python-sounddeviceとpyaudioは、プラットフォームを越えてWAVファイルを再生するためにPortAudioライブラリにバインディングを提供する。
  • pydubは、pyaudioでオーディオを再生する必要がありますが、ffmpegをインストールした後、いくつかのコードを使って各種オーディオフォーマットを再生することができます。
  • 一、オーディオファイルを再生する
    プレースアウトライブラリを使う
    1、据え付け
    
    $ pip install playsound
    2、オーディオを再生する
    
    from playsound import playsound
    playsound('myfile.wav')
    シンプルライブラリを使う
    1、据え付け
    
    $ pip install simpleaudio
    2、オーディオを再生する
    
    mport simpleaudio as sa
    
    filename = 'myfile.wav'
    wave_obj = sa.WaveObject.from_wave_file(filename)
    play_obj = wave_obj.play()
    play_obj.wait_done() # Wait until sound has finished playing
    win soundライブラリを使う
    Windowsを使用すると、内蔵のwindsoundモジュールを使って基本的なサウンド再生機構にアクセスできます。WAVファイルを再生するには、いくつかの行のコードがあります。
    
    import winsound
    
    filename = 'myfile.wav'
    winsound.PlaySound(filename, winsound.SND_FILENAME)
    python-sounddeviceライブラリを使用する
    1、据え付け
    
    $ pip install sounddevice
    2、オーディオを再生する
    
    import sounddevice as sd
    import soundfile as sf
    
    filename = 'myfile.wav'
    # Extract data and sampling rate from file
    data, fs = sf.read(filename, dtype='float32') 
    sd.play(data, fs)
    status = sd.wait() # Wait until file is done playing
    pydubライブラリを使う
    1、据え付け
    
    $ pip install pydub
    2、オーディオを再生する
    
    from pydub import AudioSegment
    from pydub.playback import play
    
    sound = AudioSegment.from_wav('myfile.wav')
    play(sound)
    デフォルトでは、pydubはwav形式のオーディオしか再生できません。他のフォーマットのオーディオファイルを再生したいなら。ffmpeg-pythonをインストールしたいです。
    
    $ pip install ffmpeg-python
    ffmpegをインストールした後、MP 3ファイルを再生するには、私達の前のコードの中で小さな修正をする必要があります。
    
    from pydub import AudioSegment
    from pydub.playback import play
    
    sound = AudioSegment.from_mp3('myfile.mp3')
    play(sound)
    pyaudioライブラリを使う
    1、据え付け
    
    $ pip install pyaudio
    2、オーディオを再生する
    
    import pyaudio
    import wave
    
    filename = 'myfile.wav'
    
    
    chunk = 1024 
    wf = wave.open(filename, 'rb')
    p = pyaudio.PyAudio()
    stream = p.open(format = p.get_format_from_width(wf.getsampwidth()),
        channels = wf.getnchannels(),
        rate = wf.getframerate(),
        output = True)
    
    data = wf.readframes(chunk)
    
    while data != '':
     stream.write(data)
     data = wf.readframes(chunk)
    
    stream.close()
    p.terminate()
    前に見たライブラリを使って音を再生するよりも、pyaudioを使って音を再生する方が複雑だということに気づいたかもしれません。これは、Pythonアプリケーションで音声効果を再生するだけであれば、あなたの優先順位ではないかもしれません。
    しかし、pyaudioはより低レベルな制御を提供するので、入出力装置のパラメータを取得して設定し、CPU負荷と入出力遅延を確認することができます。
    また、音声の再生と録音も可能です。コールバックモードでは、新しいデータの再生や利用可能なデータの記録が必要な場合には、指定されたコールバック関数を呼び出します。あなたのオーディオに必要なのが簡単な再生だけではないなら、これらのオプションはpyaudioを適切なライブラリにします。
    多くの異なるライブラリを使ってオーディオを再生する方法が分かりましたので、Pythoonを使って自分でオーディオを録音する方法を確認してみます。
    レコーディング
    Python-sounddeviceとpyaudioライブラリは、Pythonでオーディオを録音する方法を提供します。
    1、python-sounddeviceを使って録音する
    
    import sounddevice as sd
    from scipy.io.wavfile import write
    
    fs = 44100 # Sample rate
    seconds = 3 # Duration of recording
    
    myrecording = sd.rec(int(seconds * fs), samplerate=fs, channels=2)
    sd.wait() # Wait until recording is finished
    write('output.wav', fs, myrecording) # Save as WAV file 
    2、pyaudioで録音する
    
    import pyaudio
    import wave
    
    chunk = 1024 # Record in chunks of 1024 samples
    sample_format = pyaudio.paInt16 # 16 bits per sample
    channels = 2
    fs = 44100 # Record at 44100 samples per second
    seconds = 3
    filename = "output.wav"
    
    p = pyaudio.PyAudio() # Create an interface to PortAudio
    
    print('Recording')
    
    stream = p.open(format=sample_format,
        channels=channels,
        rate=fs,
        frames_per_buffer=chunk,
        input=True)
    
    frames = [] # Initialize array to store frames
    
    # Store data in chunks for 3 seconds
    for i in range(0, int(fs / chunk * seconds)):
     data = stream.read(chunk)
     frames.append(data)
    
    # Stop and close the stream 
    stream.stop_stream()
    stream.close()
    # Terminate the PortAudio interface
    p.terminate()
    
    print('Finished recording')
    
    # Save the recorded data as a WAV file
    wf = wave.open(filename, 'wb')
    wf.setnchannels(channels)
    wf.setsampwidth(p.get_sample_size(sample_format))
    wf.setframerate(fs)
    wf.writeframes(b''.join(frames))
    wf.close()
    三、保存と書式変換
    1、pydubを使ってオーディオを保存する
    
    from pydub import AudioSegment
    sound = AudioSegment.from_wav('myfile.wav')
    sound.export('myfile.mp3', format='mp3')
    2、pydubを使ってフォーマット変換を完了する。
    
    from pydub import AudioSegment
    sound = AudioSegment.from_wav('myfile.wav')
    sound.export('myfile.mp3', format='mp3')
    内容がいいと思ったら、もっと多くの友達に分けてプログラミングのスキルをアップします。
    以上がPythonの再生と録音機能の詳細です。pythonの再生と録音に関する資料は他の関連記事に注目してください。