大家有沒有看過“一把十首”倒放變成“我是傻逼”視頻?
我現在利用python的pyaudio進行驗證一下。
自己錄一段語音
<code>import
wave
import
pyaudio
CHUNK
=1024
FORMAT
=pyaudio.paInt16
CHANNELS
=2
RATE
=44100
RECORD_SECONDS
=5
WAVE_OUTPUT_FILENAME
="ybss.wav"
p
=pyaudio.PyAudio()
stream
=p.open(format=FORMAT,
channels
=CHANNELS,
rate
=RATE,
input
=True,
frames_per_buffer
=CHUNK)
recording")
frames
=[]
for
i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data
=stream.read(CHUNK)
frames.append(data)
done recording")
stream.stop_stream()
stream.close()
p.terminate()
wf
=wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
/<code>
播放&倒放
<code>import
pyaudioimport
waveimport
sys chunk =160
f = wave.open(r"ybss.wav"
,"rb"
) p = pyaudio.PyAudio() stream = p.open(format = p.get_format_from_width(f.getsampwidth()), channels = f.getnchannels(), rate = f.getframerate(), output =True
) data = f.readframes(chunk) pdata = data mdata = datawhile
data !=b''
: pdata = pdata + data mdata = data + mdata data = f.readframes(chunk) print("正放"
, len(pdata)) stream.write(pdata) print("倒放"
, len(mdata)) stream.write(mdata) stream.stop_stream() stream.close() p.terminate() frames = [] frames.append(pdata) frames.append(mdata) wf = wave.open(r"ybss_p.wav"
,'wb'
) wf.setnchannels(f.getnchannels()) wf.setsampwidth(f.getsampwidth()) wf.setframerate(f.getframerate()) wf.writeframes(b''
.join(frames)) wf.close()/<code>
以上代碼實現正放和倒放,可以體驗一下是不是變成“我是傻b了”
附上音頻感受一下:
ybss_p.wav0:07
來自苦苦tt
為什麼呢?好神奇!!