【问题标题】:Play pre-recorded audio into a voice call that created by simcom将预先录制的音频播放到由 simcom 创建的语音通话中
【发布时间】:2020-12-03 01:41:50
【问题描述】:

目前,我正在使用 simcom SIM7600G-H(使用 AT 命令集)创建语音呼叫,以通知用户一些指定的通知。我可以创建语音通话并将其挂断,但不知道如何在其中播放预先录制的音频。无论如何要执行该任务。我使用 simcom 创建语音通话的代码如下:

import serial
import time

ser = serial.Serial("COM5", 115200)
ser.flushInput()

phone_number = '09xxxxxxx' 
text_message = 'test simcom 7600'

def checkStart():
    while True:
        ser.write(('AT\r\n').encode())
        time.sleep(0.1)
        if ser.inWaiting():
            time.sleep(0.01)
            recBuff = ser.read(ser.inWaiting())
            print('try to start\r\n' + recBuff.decode() )
            print(recBuff.decode())
            if 'OK' in recBuff.decode():
                print("ok")
                recBuff = ''
                return
        else:
            time.sleep(1)

def sendAt(command,back,timeout):
    rec_buff = ''
    ser.write((command+'\r\n').encode())
    time.sleep(timeout)
    if ser.inWaiting():
        time.sleep(0.01 )
        rec_buff = ser.read(ser.inWaiting())
    if back not in rec_buff.decode():
        print(command + ' ERROR')
        print(command + ' back:\t' + rec_buff.decode())
        return 0
    else:
        print(rec_buff.decode())
        return 1

def PhoneCall(phone_number):
    sendAt('ATD'+phone_number+';','OK',1)
    time.sleep(20)
    ser.write('AT+CHUP\r\n'.encode())
    print('Call disconnected')

try:
    checkStart() 
    PhoneCall(phone_number)
    time.sleep(20)
    sendAt("ATH")
except:
    print("Unable to connect!")
    if ser != None:
        ser.close()

【问题讨论】:

  • 根据AT命令指南,AT+CPCMREG=1应该“启动usb音频功能,需要在调用start(ATDxxx;)后使用”。因此,您将能够按照in this document 的描述在 USB 音频端口(在端口枚举中描述为“Audio 9001”)上发送 PCM 数据。如果您找到将音频文件发送到该端口的方法,您应该完成您的任务。

标签: python at-command phone-call sim-card


【解决方案1】:

我一直在忙于同样的问题。我已经使用 QMI 接口来启用 PCM。我使用 ModemManager 添加 qmi_wwan 并通过 QMI 启用音频。当您使用 ModemManager mmcli -m 0 时,您可能会在 /dev/ttyUSB4 上显示一个音频串行端口。要在 7600 上启用 PCM,您应该执行 AT+CPCMREG=1。之后,您可以使用串行连接将音频数据流式传输到串行端口。

https://simcom.ee/documents/SIM7X00/SIM7100_SIM7500_SIM7600%20Series_USB%20AUDIO_Application%20Note_V1.03.pdf

我使用sox将音频数据转换为8k 16位格式:

sox input.wav  -r 8000 -b 16 out.wav

您可以使用 wave 加载波形文件 https://docs.python.org/3/library/wave.html

不要忘记禁用xonxoff rtscts 的串口。

我建议你使用dbus与7600通信

https://github.com/Jude188/python-modemmanager

【讨论】:

    猜你喜欢
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    • 2022-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    相关资源
    最近更新 更多