【问题标题】:how to send voice from microphone or play recorded audio from hsdpa dongle C#如何从麦克风发送语音或从 hsdpa 加密狗 C# 播放录制的音频
【发布时间】:2013-07-03 11:19:41
【问题描述】:

我已经完成了所有的呼叫拨号部分并且它有效。现在我需要通过电话播放录制的声音或麦克风。我只需要知道如何将音频传递到加密狗并通过通话发送。

这是我拨打电话号码的工作代码

SerialPort port = new SerialPort();
port.Open();
string t = port.ReadExisting();
Thread.Sleep(100);

string cmd = "ATD";
string phoneNumber = "071********";
port.WriteLine(cmd + phoneNumber + ";\r");


port.Close();

【问题讨论】:

  • 你试过voice mode commands吗?
  • 我猜这里是因为我找不到任何文档,但我不相信您会通过该虚拟 COM 端口发送音频;它可能仅用于命令。查看设备管理器,您可能会看到属于加密狗一部分的音频设备。如果我是对的,您需要打开这些音频设备来发送/接收音频。而且.Net的audio api好像有缺,可以试试NAudio。
  • 我已经完成了呼叫拨号部分,它可以工作。但是我无法获取或发送语音到加密狗。有两个COM端口。我将所有AT命令传递给COM14并写一个SerialDataReceivedEvent 到 COM12 端口。当我接听电话时,COM12 端口读取器会在我将它读取的内容转换为字符串时读取一些内容它就像这样 "\r\n^ORIG:1,0\r\n\r\n^CONF:1\r\ n\r\n^CONN:1,0\r\n\r\n^CEND:1,8,104,16\r\n" 我认为这是加密狗用来发送和接收语音数据的第二个端口。谁能告诉我如何从该端口 COM12 获取音频流并将我的麦克风输入发送到该端口。
  • COM12 如何在 Windows 设备管理器中显示?它是否显示为音频设备?
  • 这是我的设备管理器的截图share.cx.com/Q8qhsy

标签: c# at-command telecommunication


【解决方案1】:

对于您的调制解调器,您有 3 个可用的 COM 端口。一个是发送AT指令,一个是发送数据(语音数据),最后一个是监听异步状态变化。

当您拨打电话(使用 ATD)时,您必须在监控端口上等待“^CONN: 1, 0”。

那么您需要一个 8KHz、16 位有符号、1 声道的声源。 在数据端口上写入此源的 320 字节,每 20ms。

您还将从该端口读取 320 字节的数据,每 20 毫秒为对方说话。

当你得到 "^CEND: ..." 时,调用被终止。

但要小心一些捕获。即使对方拒绝了您的呼叫,您也会得到“^CONN: 1, 0”。所以,先尝试从数据端口读取数据,在发出^CONN消息后检查对方是否还在。

【讨论】:

  • @xryl669 - 请告诉我,您是如何得出这些数字的?我这里有一个帖子:stackoverflow.com/questions/37449498/…
  • @Chris:首先,您可以将数据流记录为原始数据,然后尝试 SOX 来解释音频流。因此,每 20 毫秒 320 字节给出 16KiB = 8000 个样本 * 2(16 位)每秒。如果 µLaw 编码,您可能会有所不同。
猜你喜欢
  • 2018-06-18
  • 1970-01-01
  • 1970-01-01
  • 2020-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-13
  • 2012-07-31
相关资源
最近更新 更多