在python中通过调制解调器发送wav声音

Posted

技术标签:

【中文标题】在python中通过调制解调器发送wav声音【英文标题】:Send wav sound through modem in python 【发布时间】:2018-07-29 12:13:47 【问题描述】:

我正在尝试在 python 和 linux 中制作一个自动应答和呼叫机器,但到目前为止我只能拨打一个号码。 在发送声音或录制声音时,我没有成功。 过去一周我一直在努力解决这个问题,到目前为止还没有找到解决方法。

我使用的调制解调器是 Conexant Systems (Rockwell)

这是我正在使用的代码:

import serial
import wave
import time

def initializePhone():
    phone = serial.Serial('/dev/ttyACM0', 112500, timeout=5)
    phone.write('AT'.encode())
    phone.write('AT+FCLASS=8')
    phone.write('AT+VSM=0,8000')
    return phone

def call(number):
    command = 'ATDT'+str(number)
    phone.write(command.encode())


def sendMusic(phone, music):
    cont = True
    while cont:
        frame = music.readframes(1024)
        if frame == '':
            cont = False
        ser.write(b"".join(frame))


def main():
    phone = initializePhone()
    music = wave.open('wood.wav','r')
    call('555555')
    time.sleep(10)
    sendMusic(phone, music)


if __name__=='__main__':
    main()

任何帮助将不胜感激。

【问题讨论】:

没有协议就不能发送任何声音! Read this 非常感谢。你发给我的链接显示了代码缺少的命令 【参考方案1】:

找到我的脚本中缺少的命令。这是带有修复程序的新版本。 在发送音频数据之前,我错过了“AT+VTX”命令。

import serial
import wave
import time

def initializePhone():
    phone = serial.Serial('/dev/ttyACM0', 112500, timeout=5)
    phone.write('AT\r\n'.encode())
    phone.write('AT+FCLASS=8\r\n'.encode())
    phone.write('AT+VSM=0,8000\r\n'.encode())
    return phone

def call(number):
    command = 'ATDT'+str(number)+'\r\n'
    phone.write(command.encode())


def sendMusic(phone, music):
    phone.write('AT+VTX\r\n'.encode())
    cont = True
    while cont:
        frame = music.readframes(1024)
        if frame == '':
            cont = False
        ser.write(b"".join(frame))


def main():
    phone = initializePhone()
    music = wave.open('wood.wav','r')
    call('555555')
    time.sleep(10)
    sendMusic(phone, music)


if __name__=='__main__':
    main()

【讨论】:

以上是关于在python中通过调制解调器发送wav声音的主要内容,如果未能解决你的问题,请参考以下文章

向 USB GSM 调制解调器发送“AT”命令在 Python 中返回空字符串

如何用 56k 调制解调器发出声音?

音频数据文件格式(PCM,WAV,MIDI)简记

有没有办法使用python发送和接收调制信号的信号?

如何在通话期间通过 GSM 调制解调器发送和接收一些数据(Python 和 AT 命令)

PCM和WAV音频格式的区别,以及python自动转换