python将文本转化为音乐

编码

import wave

frame_bytes = bytearray()
string='杭州涅普科技有限责任公司出品'
bits = list(map(int, ''.join([bin(ord(i)).lstrip('0b').rjust(16,'0') for i in string])))

for i,bit in enumerate(bits):
    print("[",bit,"]")
    for m in range(10):
        frame_bytes.append(bit<<7)
        print("[",bit<<7,"]")
frame_modified = bytes(frame_bytes)

# Write bytes to a new wave audio file
with wave.open('song_embedded.wav', 'wb') as fd:
    fd.setparams((1, 2, 44100, 44100, 'NONE', 'not compressed'))
    fd.writeframes(frame_modified)

解码

# We will use wave package available in native Python installation to read and write .wav audio file
import wave
# read wave audiaudioo file
song = wave.open("audio.wav", mode='rb')
# Read frames and convert to byte array
frame_bytes = bytearray(list(song.readframes(song.getnframes())))
binstring=''
for bit in frame_bytes[::10]:
   if bit==128:
        binstring=binstring+'1'
   else :
        binstring=binstring+'0'
string = "".join(chr(int("".join(binstring[i:i+16]),2)) for i in range(0,len(binstring),16))

print(string)




发布了77 篇原创文章 · 获赞 33 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/fjh1997/article/details/104964910