音频降噪 java_流音频中的降噪和压缩
希望你能帮忙 . 我正在录制麦克风的音频并通过网络直播 . 样品质量为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_流音频中的降噪和压缩相关推荐
- 音频降噪在58直播中的研究与实现
背景 在直播时主播经常会受到一些外部环境音.噪音等影响,直播时音频采集会一并采集所有音频推流到观众设备上,从而影响观众收听体验.因此需要在直播主播端主动进行降噪处理,提高观众收听体验. 58直播为了实 ...
- python音频 降噪_从视频中提取音频数据,然后应用傅里叶对音频降噪(python)...
视频准备 QQ有热键 然后随便打开一个视频网站进行录屏 我选择B站 从视频中提取音频 需要安装包moviepy pip install moviepy 提取代码 from moviepy.editor ...
- 06|音频降噪概述(2)一基于AI降噪
目录 引言: 一. AI降噪模型等基础知识: 1.1 常见的模型结构: DNN CNN RNN 1.2 模型训练方法 步骤: 1.3 设计AI降噪模型: 步骤 二. 基于频域掩码的AI降噪模型 基于频 ...
- 算法也浪漫——我们和声网音频专家聊了聊美声、降噪与超高音质
/与其说音频技术小众,不如说大家对周围最常用的东西太过习以为常,反而没意识到这些"习以为常"背后的音频技术的存在./ 音频专家的浪漫主义情怀 LiveVideoStack:在您 ...
- A2B音频总线在智能座舱中的应用
01 什么是A2B音频总线? 车载A2B链路 A2B全称是Automotive Audio Bus,即车载音频总线. 音频是智能座舱的核心功能,涵盖车载音响.语音识别.e-Call.消噪及回声消除等应 ...
- Android视频编辑器(五)音频编解码、从视频中分离音频、音频混音、音频音量调节等
前言 这篇博客,主要讲解的是android端的音频处理,在开发Android视频编辑器的时候,有一个非常重要的点就是音频的相关处理.比如如何从视频中分离音频(保存为mp3文件),然后分离出来的音频如何 ...
- 精确分割和筛选音频从长的音频中
设计思路图 import torch import torchaudio import matplotlib.pyplot as plt import numpy from moviepy.edito ...
- 使用python moviepy提取视频中的音频,同时对音频数据进行数据可视化分析
文章目录 1 使用moviepy库包提取音频 1.1 moviepy库包说明 1.2 安装moviepy 1.2 使用moviepy提取视频中的音频 2 使用librosa库包读取音频文件,并分析音频 ...
- 怎么剪切音频的一部分 去掉音频中的某段内容
剪切音频中的一部分,简单点来说,就是把音频中的部分内容给去掉.比如说:一个音频有50秒,我想把其中20~40秒的内容去掉,只保留另外一部分内容.但是因为要去掉的视频部分精确到了秒,所以就需要设置相应的 ...
最新文章
- 现在的编译器还需要手动展开循环吗_性能 - 如果有的话,循环展开仍然有用吗?...
- 网站推广期间如何做好用户体验中的交互体验设计?
- 我的Docker-CE学习笔记(03)
- 用python进行自然语言处理_Python自然语言处理示例:SVM和贝叶斯分类
- Python ValueError: IO operation on closed file
- 3种语言白色汇汇通微盘程序源码
- 我参与的一个x86平台项目的经历
- poj 1056 IMMEDIATE DECODABILITY
- 吴恩达机器学习7——支持向量机SVM
- Nginx详解(正向代理、反向代理、负载均衡原理)
- 基于微信小程序点餐系统的设计与实现(含word论文)
- java 中文变拼音包,中文转化为拼音工具包
- 线性链表头插法,插入,删除操作(完整代码)
- Flink系列:物理分区分组broadcast、global、shuffle、forward、rebalance、rescale理解与实战
- 实测:熊猫烧香考验五大杀毒软件
- C++学习(complex类)
- 微信小程序实现运动步数排名与发布个人动态服务器部署
- 性能测试:Loadrunner 脚本录制、设置事务、添加检查点、参数化以及添加关联
- 未连接到互联网错误的解决方案
- 小菜鸡刷CTF(二)
热门文章
- groovy+grails+gradle开发
- 用C语言编写程序计算对角线的和,C语言入门级代码 计算二维数组主对角线上的元素之和...
- 拍乐云携手UCloud,共建云的美好时代
- 对话区块方舟Warren:DAO和隐私赛道被低估了 |链捕手
- 【Demo】银行主数据的修改
- 天图投资冲刺港股:资产管理规模249亿 投了小红书与奈雪
- 插补c语言程序,逐点比较法插补C语言程序
- 华为官方翻新产品秒杀活动来袭,官方正品,7折优惠,真香!
- 姗姗来迟,智能音箱于华为是鸡肋还是熊掌?
- 西门子300 PLC 功能块及背景数据块的说明