[python]“一把十首”倒放“我是傻b”驗證

大家有沒有看過“一把十首”倒放變成“我是傻逼”視頻?

我現在利用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

pyaudio

import

wave

import

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 = data

while

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


為什麼呢?好神奇!!


分享到:


相關文章: