[项目总结]在ios中使用soundtouch库实现变声

来源:yarin's blog™ 责任编辑:栏目编辑 发表时间:2013-07-01 07:29 点击:

 这篇文章是项目总结了。

做了段时间的项目,过程中也遇到了很多麻烦,但是好在终于都解决了,这里是这里是项目之后凭着记忆总结出来,大家有遇到同样的问题,希望能参考了,但是我记忆可能不太好了,要是实践中有什么问题可以直接给我留言,或者到weibo.com/yarin上找我了。

要在ios中实现一个变声技术,而且又要要求能在iphone 3g上也能运行,所以自带的一些api就显得比较麻烦,因此决定使用soundtouch开源库,该库可以实现变声效果,包括可以调节声音的频率而不改变声音的长度,大家可以使用openal试试,改变频率之后,声音就会变短了。

呵呵,有了这个库,其实我们就可以山寨一个talkingtom了,记住我不是叫大家去山寨,这里只是谈谈学习的技术。还是要创新才好啊。

SoundTouch是一个开源的音频处理库,主要实现包含变速、变调、变速同时变调等三个 功能模块,能够对媒体流实时操作,也能对音频文件操作。采用32位浮点或者16位定点,支持单声道或者双声道,采样率范围为8k~48k。

过程大概如下:

首先下载soundtouch开源苦,这个可以到官方网站去找了,http://www.surina.net/soundtouch/。

下载之后解压,将“soundtouch/source/SoundTouch”中的文件全部拷贝到要添加的ios项目中,暂时记不清出要不要修改其他的参数了,如果又任何错误则欢迎讨论,应该是可以直接编译的,加入之后如下图。

因为soundtouch是一个c++编写的开源库,所以要在ios中使用,就要和object-c混编了,该改后缀名的就改了吧。

下面我们要修改音频文件主要调整的几个函数如下了:

  1. mSoundTouch.setSampleRate(sampleRate);//设置声音的采样频率 
  2. mSoundTouch.setChannels(channels);//设置声音的声道 
  3. m_SoundTouch.setTempoChange(tempoDelta); //这个就是传说中的变速不变调 
  4. m_SoundTouch.setPitchSemiTones(pitchDelta);//设置声音的pitch 
  5. mSoundTouch.setRateChange(rateDelta);//设置声音的速率 
  6. // quick是一个bool变量,USE_QUICKSEEK具体有什么用我暂时也不太清楚。 
  7. mSoundTouch.setSetting(SETTING_USE_QUICKSEEK, quick); 
  8. // noAntiAlias是一个bool变量,USE_AA_FILTER具体有什么用我暂时也不太清楚。 
  9. mSoundTouch.setSetting(SETTING_USE_AA_FILTER, !(noAntiAlias)); 

其中mSoundTouch是一个soundtouch对象了。至于要怎么变就看你怎么调节参数了,soundtouch的特点好像就是吧声音变得卡通了,这个按照自己的需求去选择吧,也还有其他的一些开源库了。

在文末会给大家提供一个soundtouch整合iphone自带的SpeakHere的例子了,但是不知道能不能上传,好像有点儿大,如果不能上传就到http://weibo.com/yarin上找我吧。

最后需要注意的两个问题:

已开始我编译出来,声音很奇怪也有噪音很大,还是花了很多时间来找原因,但是都无果,突然想起前面我们说过,它同时支持32位浮点和16位定点,默认时采用32位浮点的,我将其改为16位定点数的,哈哈,对了,效果很好,更改方式在STTypes.h文件中找到FLOAT_SAMPLES宏,注释掉,并打开INTEGER_SAMPLES宏,如下:

  1. #if !(INTEGER_SAMPLES || FLOAT_SAMPLES) 
  2.     
  3.     /// Choose either 32bit floating point or 16bit integer sampletype 
  4.     /// by choosing one of the following defines, unless this selection  
  5.     

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • Android 完全退出程序
      • 原创:Android应用开发-Andorid歌词秀,含源码
      • android 屏幕保护
      • Android手机软件汉化教程---第四课 dex文件汉化
      • 众多Android 开源项目推荐,给力工作给力学习
      • Android Audio代码分析4
      • Android得到已安装的应用程序信息!
      • Android开发者指南(29) —— USB Host and Accessory
      • Android成长的幕后推手:工程师鲁宾
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1