智能语音机器人软件免不了需要对语音流进行处理,主要包括语音的播放、录制、读取、保存、图形化展示和剪辑等功能。这方面专业的软件有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开发音频编辑软件相关推荐

  1. Wavosaur音频编辑软件: 功能专业,体积超小(500KB)

    Wavosaur 是一款免费音频编辑软件.功能丰富.绿色小巧是它的最大优点.它提供了非常丰富的编辑功能,包括:剪切.复制.混音.均衡.淡入淡出.2d和3d分析.循环处理.批量处理.单/多声道转换等功能 ...

  2. 需要一款Mac上好用的音频编辑软件吗?看这里~

    为您推荐ocenaudio mac版,这是一款易于使用,功能强大的音频处理器,如果经常需要编辑.分析音频,但有不想要太复杂的工具,Ocenaudio是最佳选择,OcenAudio for Mac工作区 ...

  3. 音频编辑软件_Audacity2.12版

    音频编辑软件_Audacity2.12版 来源: 作者: 发布时间:2016-07-04 点击:508次 Audacity是一款免费开源的音频编辑软件,可导入导出WAV.AIFF.MP3.Ogg等音频 ...

  4. 电脑常用音频剪辑软件_常用的音频编辑软件

    用电脑来进行音频制作是目前很多人的需求,譬如说小视频,微电影,广播电台片花等等,这需要音频制作处理软件的支持.目前市场上的音频处理软件很多,比较常用和受欢迎的也不少.这里选择了10款常用的音频制作软件 ...

  5. 音频编辑软件Goldwave v6.68中文版,goldwave 2022最新版怎么来消除人声

    音频编辑软件Goldwave v6.68中文版是一款高评价,专业的数字音频编辑器.从最简单的录制和编辑到最复杂的音频处理,恢复,增强和转换,它可以完成所有工作.它易于学习和使用,集声音编辑,播放,录制 ...

  6. 音频编辑软件哪个好用

    我们经常需要对歌曲.音乐进行剪辑,将它们制作成手机铃声,或者是短视频背景音乐.进行剪辑呢便需要使用剪辑工具,那么音频编辑软件哪个比较好用呢?其实好用的软件有很多,小编这边就有一个很不错,下面便介绍给大 ...

  7. Adobe Audition 2022 v22.5 WiN-MAC 专业音频编辑软件

    Adobe Audition 2022 是一个专业的音频工作站.使用业界最佳的数字音频编辑软件创建.混合和设计音效.Audition 是一个综合工具集,包括用于创建.混合.编辑和恢复音频内容的多轨.波 ...

  8. linux 音频文件切割_适用于 Linux 系统的 6 款最佳音频编辑软件

    适用于 Linux 系统的 6 款最佳音频编辑软件 无论你是专业的音乐制作人,还是只拿来剪辑剪辑音频,搞个手机铃声啥的,音频编辑软件总会派上用场.对于 Linux 系统而言,好用的音频编辑器就有很多款 ...

  9. DSP-Quattro 5 for mac(强大的音频编辑软件)

    mac音频编辑软件哪个好?DSP-Quattro for Mac可以说是mac平台上一款很强大的音频编辑工具,包含通用二进制支持:DSP-Quattro的本地运行基于新的英特尔处理器的Mac电脑.支持 ...

最新文章

  1. php更改asp.net教程,ASP.NET 教程
  2. 线段树、二叉堆以及离散化入门
  3. JS window对象常用方法
  4. 【求推荐】优化SAP使用效率的RPA工具推荐
  5. lamp mysql大小限制_[转]LAMP 系统性能调优,第 3 部分: MySQL 服务器调优
  6. Server.MapPath()的用法
  7. 自从装了windows神器,再也不用羡慕mac了
  8. angular js实现开关效果
  9. 常用的几款工具让 Kubernetes 集群上的工作更容易
  10. 微课|中学生可以这样学Python(2.3.4节):例2-2
  11. 对一个存储过程语法的解读
  12. RHEL6本地YUM源配置
  13. jxls能把html转成excel吗,如何用XLSTransformer生成excel文件?jxls的使用方法
  14. Linux与网络基础知识
  15. 框架设计--第十七章 SSM框架整合--习题答案
  16. 74cms 6.0.20版本文件包含漏洞复现
  17. 一步一步教你在Linux上搭建云服务器
  18. 一文搞懂什么是单代号网络图!
  19. 2017苹果全球开发者大会直播地址
  20. 人工智能的可行性分析

热门文章

  1. 企业批量部署Win7(三)—— AIK应答文件磁盘管理部分详解
  2. 一些查询网站(TBD)
  3. Spring详细总结
  4. 我买到了Rolling Stones的《Forty Licks》!!!特此纪念(此签名悬挂时间为 未定)
  5. 【转】自然常数“e”,工程中的自然数“1”
  6. 【游戏引擎Easy2D实战】选择关卡场景示例
  7. 简单数学基础【素数分布】+【异或】
  8. (搬运)Scott Hanselman 的 2014 年 Windows 平台软件推荐
  9. dblink ora-00600 ora-02072 ora-02063
  10. GAN -- 生成对抗网络