import pydub
import pydub.playback
import numpy as np
import time
import threading
def play_audio_and_print_binary(file_path):
# 加载音频文件
audio = pydub.AudioSegment.from_file(file_path)
# 将音频转换为原始数据
raw_data = np.array(audio.get_array_of_samples())
# 创建播放线程
def play_audio():
pydub.playback.play(audio)
play_thread = threading.Thread(target=play_audio)
play_thread.start()
# 打印二进制数据
try:
for sample in raw_data:
# 将样本转换为二进制表示(16位)
binary_representation = format(sample & 0xFFFF, '016b')
print(binary_representation, end=' ', flush=True)
# 控制打印速度,使其与音频播放大致同步
time.sleep(audio.duration_seconds / len(raw_data))
except KeyboardInterrupt:
print("\n停止播放...")
play_thread.join()
if __name__ == "__main__":
# 替换为你的音频文件路径
audio_file = "s.mp3"
play_audio_and_print_binary(audio_file)