安装所需库
确保安装paho-mqtt用于MQTT通信,pydub用于音频转换。
pip install paho-mqtt pydub
import paho.mqtt.client as mqtt
import numpy as np
from pydub import AudioSegment
# MQTT配置
broker = "your_mqtt_broker_ip"
port = 1883
topic = "audio/pcm"
# PCM数据存储
pcm_data = []
# MQTT回调函数
def on_connect(client, userdata, flags, rc):
print("Connected with result code " + str(rc))
client.subscribe(topic)
def on_message(client, userdata, msg):
global pcm_data
adc_value = int(msg.payload.decode())
# 假设ADC值范围是0-4095,将其转换为-32768到32767的PCM范围
pcm_value = np.int16((adc_value / 4095.0) * 65535 - 32768)
pcm_data.append(pcm_value)
# MQTT客户端配置
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect(broker, port, 60)
client.loop_start()
# 等待数据收集
import time
time.sleep(10) # 调整收集时间
# 停止MQTT循环
client.loop_stop()
# 将PCM数据转换为音频文件
audio = AudioSegment(
data=np.array(pcm_data, dtype=np.int16).tobytes(),
sample_width=2, # 16-bit audio
frame_rate=16000, # 采样率
channels=1 # 单声道
)
# 保存为WAV文件
audio.export("output.wav", format="wav")
# 转换为MP3文件
audio.export("output.mp3", format="mp3")
print("MP3文件已生成")
使用MQTT消息,并将ADC值转换为PCM格式。
使用pydub将PCM数据保存为WAV文件,然后转换为MP3文件。