Microsoft Teams通话录音.....音频问题

问题描述

问题
我的代码基于此sample。当我捕获音频时,它会极度抖动/断断续续,并且由于回放持续时间约为预期持续时间的四分之一而听起来有些“加速”。

代码段 在我的callhandler中,我有以下内容。...我的“计划”是尝试尽快消除接收到的缓冲区,以避免任何潜在的瓶颈,然后稍后处理“原始”字节并将其转换为WAV文件

private async void OnAudioMediaReceived(object sender,AudioMediaReceivedEventArgs e)
{
  try
  {
    if (e.Buffer.IsSilence) return;
    var managedArray = new byte[e.Buffer.Length];
    Marshal.copy(e.Buffer.Data,managedArray,(int)e.Buffer.Length);
    using (var fs = new FileStream($"c:\\tmp\\myTelephoneCallAudio.raw",FileMode.Append))
    {
      fs.Write(managedArray,managedArray.Length);
      fs.Close();
    }
  }
  catch (Exception exception)
  {
    Console.WriteLine(exception);
    throw;
  }
  finally
  {
    e.Buffer.dispose();
  }
}

......然后,电话通话结束后,我会通过基本上生成一个wav文件头并从原始文件添加wav内容,将上面创建的.raw文件处理为.wav。

预期的行为
通话持续时间清晰清晰的录音。

正在使用的图形SDK:

  • Microsoft.Graph(Nuget)-v3.12.0
  • Microsoft.Graph.Core(Nuget)-v1.21.0
  • Microsoft.GraphCommunications.Calls(Nuget)-v1.2.0.1702
  • Microsoft.GraphCommunications.Calls.Media(Nuget)-v1.2.0.1702
  • Microsoft.GraphCommunications.Client(Nuget)-v1.2.0.1702
  • Microsoft.GraphCommunications.Common(Nuget)-v1.2.0.1702
  • Microsoft.GraphCommunications.Core(Nuget)-v1.2.0.1702

其他信息 我提出了一个问题here,但是经验告诉我,我不会得到回应。但是在这个提出的问题中,我附上了一个带有“杂乱无章” wav的拉链。这个wav文件只有1m 25s,但通话时间为6.5分钟。

有一时间,我想到了可能出现音频“帧” /被我稍微不同步/顺序处理的问题。因此,我确实尝试将帧存储在字典中,其中密钥是帧/缓冲区的时间戳。.....那么我可以在尝试转换为wav文件之前按时间戳排序。

还在online处查看了预期的wav文件大小(例如10MB / min等)之后,看来我当前正在捕获的数据量比假设值(例如,单声道(1通道),PCM 16K,32K采样率等。

最后的提示...每次调试OnAudioMediaReceived()时,缓冲区只有640字节,这意味着我每次以640的速率附加...对于其他可能正在处理的人都是一样的这个吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)