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

标签 python wav modem

我正在尝试在 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()

任何帮助将不胜感激。

最佳答案

找到我的脚本中缺少的命令。这是带有修复程序的新版本。 在发送音频数据之前,我错过了“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 - 在 python 中通过调制解调器发送 wav 声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48863141/

相关文章:

serial-port - 通过 AT 命令向 GSM 手机/调制解调器提交 "operator commands"(例如剩余的现金 SIM 卡积分)

gsm - 如何检测远端拒绝使用AT命令的语音调用

python - 使用python操作第三方网站的html源代码

java - 如何从我的 wav 文件中提取声音数据?

android - 在android上播放从服务器下载的wav文件

.net - 编程华为E220

python - 为什么这个 C++ 代码只比 Python 快一点点?

python - 如何在函数运行时禁用 tkinter 'X'

python - Python-3 中的归并排序问题

audio - 使用 ffmpeg 将 WAV 文件的两个 channel 拆分为单独的立体声文件