6

Python で .wav ファイルの特定の部分を再生することは可能ですか?

オーディオファイルを数秒から再生し、数秒後に再生を停止する機能play(file, start, length)が欲しいです。これは可能ですか?もしそうなら、どのライブラリが必要ですか?filestartlength

4

2 に答える 2

3

I know that this is a rather old question, but I just needed the exact same thing and for me ederwander's example seems a little bit too complicated.

Here is my shorter (and commented) solution:

import pyaudio
import wave

# set desired values
start = 7
length = 3

# open wave file
wave_file = wave.open('myWaveFile.wav', 'rb')

# initialize audio
py_audio = pyaudio.PyAudio()
stream = py_audio.open(format=py_audio.get_format_from_width(wave_file.getsampwidth()),
                       channels=wave_file.getnchannels(),
                       rate=wave_file.getframerate(),
                       output=True)

# skip unwanted frames
n_frames = int(start * wave_file.getframerate())
wave_file.setpos(n_frames)

# write desired frames to audio buffer
n_frames = int(length * wave_file.getframerate())
frames = wave_file.readframes(n_frames)
stream.write(frames)

# close and terminate everything properly
stream.close()
py_audio.terminate()
wave_file.close()
于 2016-07-22T09:46:17.190 に答える