希望你能帮忙 . 我正在录制麦克风的音频并通过网络直播 . 样品质量为11025hz,8位,单声道 . 虽然有一点延迟(1秒),但效果很好 . 我需要帮助的是我现在尝试实现降噪和压缩,使音频更安静并使用更少的带宽 . 音频样本存储在C#数组的bytes []中,我使用Socket发送/接收 .

任何人都可以建议如何在C#中实现压缩和降噪?我不介意使用第三方库,只要它是免费的(LGPL许可证等),并且可以从C#中使用 . 但是,我更喜欢实际的工作源代码示例 . 提前感谢您的任何建议 .

UPDATE:

我将位大小从8位音频更改为16位音频,并且噪声问题已修复 . 来自麦克风的8位音频具有太低的信噪比 . 声音听起来很棒,11khz,16位单声道 .

然而,自从我发布这个项目以来,这个项目的要求发生了变化 . 我们现在也在尝试添加视频 . 我有一个回调设置,每100毫秒从网络摄像头接收实时图像 . 我需要对音频和视频进行编码,对它们进行编码,将它们在我的套接字上传输到服务器,服务器将流重新传输到另一个客户端,该客户端接收流,解压缩流并解码音频和视频,显示图片框中的视频,并将音频输出到扬声器 .

我正在寻找ffmpeg以帮助解决(de | en)编码/ [de] muxing,我也将SharpFFmpeg看作是ffmpeg的C#interop库 .

我找不到这样做的好例子 . 我整个星期都在互联网上搜索,没有真正的运气 . 非常感谢您提供的任何帮助!

这是一些代码,包括我的麦克风录音回叫功能:

private const int AUDIO_FREQ = 11025;

private const int CHANNELS = 1;

private const int BITS = 16;

private const int BYTES_PER_SEC = AUDIO_FREQ * CHANNELS * (BITS / 8);

private const int BLOCKS_PER_SEC = 40;

private const int BUFFER_SECS = 1;

private const int BUF_SIZE = ((int)(BYTES_PER_SEC / BLOCKS_PER_SEC * BUFFER_SECS / 2)) * 2; // rounded to nearest EVEN number

private WaveLib.WaveOutPlayer m_Player;

private WaveLib.WaveInRecorder m_Recorder;

private WaveLib.FifoStream m_Fifo;

WebCam MyWebCam;

public void OnPickupHeadset()

{

stopRingTone();

m_Fifo = new WaveLib.FifoStream();

WaveLib.WaveFormat fmt = new WaveLib.WaveFormat(AUDIO_FREQ, BITS, CHANNELS);

m_Player = new WaveLib.WaveOutPlayer(-1, fmt, BUF_SIZE, BLOCKS_PER_SEC,

new WaveLib.BufferFillEventHandler(PlayerCB));

m_Recorder = new WaveLib.WaveInRecorder(-1, fmt, BUF_SIZE, BLOCKS_PER_SEC,

new WaveLib.BufferDoneEventHandler(RecorderCB));

MyWebCam = null;

try

{

MyWebCam = new WebCam();

MyWebCam.InitializeWebCam(ref pbMyPhoto, pbPhoto.Width, pbPhoto.Height);

MyWebCam.Start();

}

catch { }

}

private byte[] m_PlayBuffer;

private void PlayerCB(IntPtr data, int size)

{

try

{

if (m_PlayBuffer == null || m_PlayBuffer.Length != size)

m_PlayBuffer = new byte[size];

if (m_Fifo.Length >= size)

{

m_Fifo.Read(m_PlayBuffer, 0, size);

}

else

{

// Read what we can

int fifoLength = (int)m_Fifo.Length;

m_Fifo.Read(m_PlayBuffer, 0, fifoLength);

// Zero out rest of buffer

for (int i = fifoLength; i < m_PlayBuffer.Length; i++)

m_PlayBuffer[i] = 0;

}

// Return the play buffer

Marshal.Copy(m_PlayBuffer, 0, data, size);

}

catch { }

}

private byte[] m_RecBuffer;

private void RecorderCB(IntPtr data, int size)

{

try

{

if (m_RecBuffer == null || m_RecBuffer.Length != size)

m_RecBuffer = new byte[size];

Marshal.Copy(data, m_RecBuffer, 0, size);

// HERE'S WHERE I WOULD ENCODE THE AUDIO IF I KNEW HOW

// Send data to server

if (theForm.CallClient != null)

{

SocketAsyncEventArgs args = new SocketAsyncEventArgs();

args.SetBuffer(m_RecBuffer, 0, m_RecBuffer.Length);

theForm.CallClient.SendAsync(args);

}

}

catch { }

}

//Called from network stack when data received from server (other client)

public void PlayBuffer(byte[] buffer, int length)

{

try

{

//HERE'S WHERE I WOULD DECODE THE AUDIO IF I KNEW HOW

m_Fifo.Write(buffer, 0, length);

}

catch { }

}

那么我应该从哪里开始呢?

音频降噪 java_流音频中的降噪和压缩相关推荐

  1. 音频降噪在58直播中的研究与实现

    背景 在直播时主播经常会受到一些外部环境音.噪音等影响,直播时音频采集会一并采集所有音频推流到观众设备上,从而影响观众收听体验.因此需要在直播主播端主动进行降噪处理,提高观众收听体验. 58直播为了实 ...

  2. python音频 降噪_从视频中提取音频数据,然后应用傅里叶对音频降噪(python)...

    视频准备 QQ有热键 然后随便打开一个视频网站进行录屏 我选择B站 从视频中提取音频 需要安装包moviepy pip install moviepy 提取代码 from moviepy.editor ...

  3. 06|音频降噪概述(2)一基于AI降噪

    目录 引言: 一. AI降噪模型等基础知识: 1.1 常见的模型结构: DNN CNN RNN 1.2 模型训练方法 步骤: 1.3 设计AI降噪模型: 步骤 二. 基于频域掩码的AI降噪模型 基于频 ...

  4. 算法也浪漫——我们和声网音频专家聊了聊美声、降噪与超高音质

    /与其说音频技术小众,不如说大家对周围最常用的东西太过习以为常,反而没意识到这些"习以为常"背后的音频技术的存在./  音频专家的浪漫主义情怀  LiveVideoStack:在您 ...

  5. A2B音频总线在智能座舱中的应用

    01 什么是A2B音频总线? 车载A2B链路 A2B全称是Automotive Audio Bus,即车载音频总线. 音频是智能座舱的核心功能,涵盖车载音响.语音识别.e-Call.消噪及回声消除等应 ...

  6. Android视频编辑器(五)音频编解码、从视频中分离音频、音频混音、音频音量调节等

    前言 这篇博客,主要讲解的是android端的音频处理,在开发Android视频编辑器的时候,有一个非常重要的点就是音频的相关处理.比如如何从视频中分离音频(保存为mp3文件),然后分离出来的音频如何 ...

  7. 精确分割和筛选音频从长的音频中

    设计思路图 import torch import torchaudio import matplotlib.pyplot as plt import numpy from moviepy.edito ...

  8. 使用python moviepy提取视频中的音频,同时对音频数据进行数据可视化分析

    文章目录 1 使用moviepy库包提取音频 1.1 moviepy库包说明 1.2 安装moviepy 1.2 使用moviepy提取视频中的音频 2 使用librosa库包读取音频文件,并分析音频 ...

  9. 怎么剪切音频的一部分 去掉音频中的某段内容

    剪切音频中的一部分,简单点来说,就是把音频中的部分内容给去掉.比如说:一个音频有50秒,我想把其中20~40秒的内容去掉,只保留另外一部分内容.但是因为要去掉的视频部分精确到了秒,所以就需要设置相应的 ...

最新文章

  1. 现在的编译器还需要手动展开循环吗_性能 - 如果有的话,循环展开仍然有用吗?...
  2. 网站推广期间如何做好用户体验中的交互体验设计?
  3. 我的Docker-CE学习笔记(03)
  4. 用python进行自然语言处理_Python自然语言处理示例:SVM和贝叶斯分类
  5. Python ValueError: IO operation on closed file
  6. 3种语言白色汇汇通微盘程序源码
  7. 我参与的一个x86平台项目的经历
  8. poj 1056 IMMEDIATE DECODABILITY
  9. 吴恩达机器学习7——支持向量机SVM
  10. Nginx详解(正向代理、反向代理、负载均衡原理)
  11. 基于微信小程序点餐系统的设计与实现(含word论文)
  12. java 中文变拼音包,中文转化为拼音工具包
  13. 线性链表头插法,插入,删除操作(完整代码)
  14. Flink系列:物理分区分组broadcast、global、shuffle、forward、rebalance、rescale理解与实战
  15. 实测:熊猫烧香考验五大杀毒软件
  16. C++学习(complex类)
  17. 微信小程序实现运动步数排名与发布个人动态服务器部署
  18. 性能测试:Loadrunner 脚本录制、设置事务、添加检查点、参数化以及添加关联
  19. 未连接到互联网错误的解决方案
  20. 小菜鸡刷CTF(二)

热门文章

  1. groovy+grails+gradle开发
  2. 用C语言编写程序计算对角线的和,C语言入门级代码 计算二维数组主对角线上的元素之和...
  3. 拍乐云携手UCloud,共建云的美好时代
  4. 对话区块方舟Warren:DAO和隐私赛道被低估了 |链捕手
  5. 【Demo】银行主数据的修改
  6. 天图投资冲刺港股:资产管理规模249亿 投了小红书与奈雪
  7. 插补c语言程序,逐点比较法插补C语言程序
  8. 华为官方翻新产品秒杀活动来袭,官方正品,7折优惠,真香!
  9. 姗姗来迟,智能音箱于华为是鸡肋还是熊掌?
  10. 西门子300 PLC 功能块及背景数据块的说明