用.net开发音频编辑软件
智能语音机器人软件免不了需要对语音流进行处理,主要包括语音的播放、录制、读取、保存、图形化展示和剪辑等功能。这方面专业的软件有Adobe Audition,为了方便用户使用,我用.net实现了上述功能。
由于这些功能相对比较独立,我顺便做了一个工具软件,如下图所示。
本软件适用的音频文件格式是wav、单声道、8000采样率、16比特。
在这里介绍一下开发这个软件过程几个有意思的点:
一、音频分段表示
将音频文件的数据部分用List<byte[]>进行分段。
FrameData = new List<byte[]>();
byte[] buffer = new byte[320];
int readedCount = 0;
i = 0;
readedCount = fileStream.Read(buffer, 0, buffer.Length);
while (readedCount > 0)
{
++i;
FrameData.Add(buffer);
buffer = new byte[320];
readedCount = fileStream.Read(buffer, 0, buffer.Length);
}
当播放音频文件时,根据传输速率每20毫秒向SecondaryBuffer写入320 byte的数据进行播放,并记录播放位置(FramePlayPositon),当暂时退出循环。当下次继续播放时,从FramePlayPositon开始继续播放。
for (int i = FramePlayPositon; i < AudioFile.Data.FrameNumber; ++i)
{
if (IsSuspend)
{
break;
}
ControlPlayPositon = GetControlPosition(i);
VoicePlayer.Instance.Play(AudioFile.Data.FrameData[i]);
FramePlayPositon = i;
Thread.Sleep(19);
}
二、显示播放指针
为了显示播放进度,用一条红色的竖线表示播放指针,在控件的ControlPlayPositon这个点上绘制。
在播放过程中为了同步显示自左向右移动的播放指针,需要不停地重绘控件图形,并按新的ControlPlayPositon绘制红色竖线。
using (Bitmap canvasDrawedCopy = DeepClone(_CanvasDrawed))
{
Graphics cursorGraphic = Graphics.FromImage(canvasDrawedCopy);
Pen pen = new Pen(Color.FromArgb(191, 0, 0), 2);
cursorGraphic.DrawLine(pen, ControlPlayPositon, 0, ControlPlayPositon, Bound.Height);
using (Graphics gc = CreateGraphics())
{
gc.DrawImage(canvasDrawedCopy, 0, 0);
}
canvasDrawedCopy.Dispose();
}
三、音频数据的复制、剪切、粘贴
在控件中通过拖动鼠标选中某一块音频内容后,可以通过Ctrl+C进行复制,Ctrl+X进行复制剪切,然后在控件中点击需要插入的位置,按Ctrl+V实现粘贴。
在音频数据分段表示的基础上,就可以方便地实现这复制、剪切、粘贴功能了。
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (AllowEdit)
{
if (keyData == (Keys.Control | Keys.C))
{
List<byte[]> frameData = GetSelectedFrameData();
Clipboard.SetDataObject(frameData);
}
else if (keyData == (Keys.Control | Keys.X))
{
List<byte[]> frameData = GetSelectedFrameData();
Clipboard.SetDataObject(frameData);
DeleteSelected();
}
else if (keyData == (Keys.Control | Keys.V))
{
IDataObject data = Clipboard.GetDataObject();
List<byte[]> frameData = data.GetData(typeof(List<byte[]>)) as List<byte[]>;
if (frameData != null && frameData.Count > 0)
{
if (AudioFile != null)
{
AudioStream audioStream = new AudioStream();
audioStream.CreateWaveFormat(8000);
int start = GetFramePosition(MouseStartPoint.X);
for (int i = 0; i <= start; ++i)
{
audioStream.AppendWhole(AudioFile.Data.FrameData[i]);
}
for (int i = 0; i < frameData.Count; ++i)
{
audioStream.AppendWhole(frameData[i]);
}
for (int i = start + 1; i < AudioFile.Data.FrameNumber; ++i)
{
audioStream.AppendWhole(AudioFile.Data.FrameData[i]);
}
string fileName = TempPath + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".wav";
audioStream.SaveWholeStream(fileName);
FileName = fileName;
ReFlash();
}
}
}
}
return base.ProcessCmdKey(ref msg, keyData);
}
对这个工具软件感兴趣的朋友可以通过下面这个链接下载,欢迎交流、指正。
http://Resource.HzBaiLing.cn/upload/VoiceRecord.rar
转载于:https://www.cnblogs.com/JiKang/p/10630400.html
用.net开发音频编辑软件相关推荐
- Wavosaur音频编辑软件: 功能专业,体积超小(500KB)
Wavosaur 是一款免费音频编辑软件.功能丰富.绿色小巧是它的最大优点.它提供了非常丰富的编辑功能,包括:剪切.复制.混音.均衡.淡入淡出.2d和3d分析.循环处理.批量处理.单/多声道转换等功能 ...
- 需要一款Mac上好用的音频编辑软件吗?看这里~
为您推荐ocenaudio mac版,这是一款易于使用,功能强大的音频处理器,如果经常需要编辑.分析音频,但有不想要太复杂的工具,Ocenaudio是最佳选择,OcenAudio for Mac工作区 ...
- 音频编辑软件_Audacity2.12版
音频编辑软件_Audacity2.12版 来源: 作者: 发布时间:2016-07-04 点击:508次 Audacity是一款免费开源的音频编辑软件,可导入导出WAV.AIFF.MP3.Ogg等音频 ...
- 电脑常用音频剪辑软件_常用的音频编辑软件
用电脑来进行音频制作是目前很多人的需求,譬如说小视频,微电影,广播电台片花等等,这需要音频制作处理软件的支持.目前市场上的音频处理软件很多,比较常用和受欢迎的也不少.这里选择了10款常用的音频制作软件 ...
- 音频编辑软件Goldwave v6.68中文版,goldwave 2022最新版怎么来消除人声
音频编辑软件Goldwave v6.68中文版是一款高评价,专业的数字音频编辑器.从最简单的录制和编辑到最复杂的音频处理,恢复,增强和转换,它可以完成所有工作.它易于学习和使用,集声音编辑,播放,录制 ...
- 音频编辑软件哪个好用
我们经常需要对歌曲.音乐进行剪辑,将它们制作成手机铃声,或者是短视频背景音乐.进行剪辑呢便需要使用剪辑工具,那么音频编辑软件哪个比较好用呢?其实好用的软件有很多,小编这边就有一个很不错,下面便介绍给大 ...
- Adobe Audition 2022 v22.5 WiN-MAC 专业音频编辑软件
Adobe Audition 2022 是一个专业的音频工作站.使用业界最佳的数字音频编辑软件创建.混合和设计音效.Audition 是一个综合工具集,包括用于创建.混合.编辑和恢复音频内容的多轨.波 ...
- linux 音频文件切割_适用于 Linux 系统的 6 款最佳音频编辑软件
适用于 Linux 系统的 6 款最佳音频编辑软件 无论你是专业的音乐制作人,还是只拿来剪辑剪辑音频,搞个手机铃声啥的,音频编辑软件总会派上用场.对于 Linux 系统而言,好用的音频编辑器就有很多款 ...
- DSP-Quattro 5 for mac(强大的音频编辑软件)
mac音频编辑软件哪个好?DSP-Quattro for Mac可以说是mac平台上一款很强大的音频编辑工具,包含通用二进制支持:DSP-Quattro的本地运行基于新的英特尔处理器的Mac电脑.支持 ...
最新文章
- php更改asp.net教程,ASP.NET 教程
- 线段树、二叉堆以及离散化入门
- JS window对象常用方法
- 【求推荐】优化SAP使用效率的RPA工具推荐
- lamp mysql大小限制_[转]LAMP 系统性能调优,第 3 部分: MySQL 服务器调优
- Server.MapPath()的用法
- 自从装了windows神器,再也不用羡慕mac了
- angular js实现开关效果
- 常用的几款工具让 Kubernetes 集群上的工作更容易
- 微课|中学生可以这样学Python(2.3.4节):例2-2
- 对一个存储过程语法的解读
- RHEL6本地YUM源配置
- jxls能把html转成excel吗,如何用XLSTransformer生成excel文件?jxls的使用方法
- Linux与网络基础知识
- 框架设计--第十七章	SSM框架整合--习题答案
- 74cms 6.0.20版本文件包含漏洞复现
- 一步一步教你在Linux上搭建云服务器
- 一文搞懂什么是单代号网络图!
- 2017苹果全球开发者大会直播地址
- 人工智能的可行性分析
热门文章
- 企业批量部署Win7(三)—— AIK应答文件磁盘管理部分详解
- 一些查询网站(TBD)
- Spring详细总结
- 我买到了Rolling Stones的《Forty Licks》!!!特此纪念(此签名悬挂时间为 未定)
- 【转】自然常数“e”,工程中的自然数“1”
- 【游戏引擎Easy2D实战】选择关卡场景示例
- 简单数学基础【素数分布】+【异或】
- (搬运)Scott Hanselman 的 2014 年 Windows 平台软件推荐
- dblink ora-00600 ora-02072 ora-02063
- GAN -- 生成对抗网络