转:在ios中使用soundtouch库实现变声

http://yarin.blog.51cto.com/1130898/640398

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

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

  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));

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

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

  1. #if !(INTEGER_SAMPLES || FLOAT_SAMPLES)
  2. /// Choose either 32bit floating point or 16bit integer sampletype
  3. /// by choosing one of the following defines, unless this selection
  4. /// has already been done in some other file.
  5. ////
  6. /// Notes:
  7. /// - In Windows environment, choose the sample format with the
  8. ///   following defines.
  9. /// - In GNU environment, the floating point samples are used by
  10. ///   default, but integer samples can be chosen by giving the
  11. ///   following switch to the configure script:
  12. ///       ./configure --enable-integer-samples
  13. ///   However, if you still prefer to select the sample format here
  14. ///   also in GNU environment, then please #undef the INTEGER_SAMPLE
  15. ///   and FLOAT_SAMPLE defines first as in comments above.
  16. #define INTEGER_SAMPLES     1    //< 16bit integer samples
  17. //#define FLOAT_SAMPLES       1    //< 32bit float samples
  18. #endif

另外一个问题就是在模拟器上测试都完全无误了,这个时候放到真机设备上,直接报错,退出程序,又一个花了我不少时间的问题,最终发现,在真机上需要将声道改变为单声道,如下,在自己设置的时候使用:

  1. mSoundTouch.setChannels(2);//1则为单声道

大功告成,当然了如果你要继续了解soundtouch库,那么这里(http://blog.csdn.net/leilu2008/article/details/6540575)又一系列的参考资料。

转:在ios中使用soundtouch库实现变声,布布扣,bubuko.com

时间: 2024-10-05 05:07:17

转:在ios中使用soundtouch库实现变声的相关文章

iOS中绑定tableview后,变量值消失的问题

好吧,标题就以最通俗的语句命名,估计百度收录的时候,大家查找的时候会更加的方便. iOS新手,这个问题着实调试了好长时间! 由于上手就开始做大的项目,也没时间从基础做起,相信大多数小公司的开发者都是这种模式.因此很多问题都产生自很基础的错误. 项目使用mvc结构,在异步读取完数据后,NSArray中model的数据就丢失了,专业点就是内存释放了,只剩下内存地址了. 可能大家的情况和我不同,所以解决方法也不一定相同. 项目服务端是asp.net webservice,使用AFNetworking读

在iOS中创建静态库

如果你作为iOS开发者已经有一段时间,可能会有一套属于自己的类和工具函数,它们在你的大多数项目中被重用. 重用代码的最简单方法是简单的 拷贝/粘贴 源文件.然而,这种方法很快就会成为维护时的噩梦.因为每个app都有自己的一份代码副本,你很难在修复bug或者升级时保证所有副本的同步. 这就是静态库要拯救你的.一个静态库是若干个类,函数,定义和资源的包装,你可以将其打包并很容易的在项目之间共享. 在本教程中,你将用两种方法亲手创建你自己的通用静态库. 为了获得最佳效果,你应该熟悉Objective-

iOS中创建动态库及调用方法

去年因需要用到动态库,自己就找了好多一些 资料,最终找到了一套方法,怎么创建与使用动态库,记录一下: Xcode提供了在iOS工程中创建静态库的功能,和在MAC上创建动态库和静态库的功能. 但是没有提供在iOS工程中创建动态库的功能(苹果官方不允许程序中存在动态库链接,这样的程序会被AppStore拒),如下图:  由于苹果不支持自己创建iOS动态库,所以要想创建动态库首先要修改Xcode的配置文件使其支持具备创建iOS 动态库的功能, 经过调研和查询网上的一些资料,并经过自己测试成功,以下是修

iOS 中的静态库与动态库,区别、制作和使用

如果我们有些功能要给别人用,但是又不想公开代码实现,比如高德地图.第三方登录分享等等,这时候我们就要打包成库了.库分静态库和动态库两种: 静态库:以.a 和 .framework为文件后缀名.动态库:以.tbd(之前叫.dylib) 和 .framework 为文件后缀名. 静态库与动态库的区别 静态库:链接时会被完整的复制到可执行文件中,被多次使用就有多份拷贝.动态库:链接时不复制,程序运行时由系统动态加载到内存,系统只加载一次,多个程序共用(如系统的UIKit.framework等),节省内

在iOS中使用ZXing库

前言 ZXing(Github镜像地址)是一个开源的条码生成和扫描库(开源协议为Apache2.0).它不但支持众多的条码格式,而且有各种语言的实现版本,它支持的语言包括:Java, C++, C#, Objective-C, ActionScript和Ruby. 我上周在iOS项目开发中使用了ZXing的扫描二维码功能.在此总结一下如何将ZXing集成到已有的iOS工程中,分享给大家. 集成步骤 首先去Google Code或Github将ZXing的代码下载下来,整个工程比较大,我们只需要其

在iOS中使用ZXing库[转]

前言 ZXing(Github镜像地址)是一个开源的条码生成和扫描库(开源协议为Apache2.0).它不但支持众多的条码格式,而且有各种语言的实现版本,它支持的语言包括:Java, C++, C#, Objective-C, ActionScript和Ruby. 我上周在iOS项目开发中使用了ZXing的扫描二维码功能.在此总结一下如何将ZXing集成到已有的iOS工程中,分享给大家. 集成步骤 首先去Google Code或Github将ZXing的代码下载下来,整个工程比较大,我们只需要其

iOS中 基于LBXScan库二维码扫描 韩俊强的博客

每日更新关注:http://weibo.com/hanjunqiang  新浪微博 首先声明这个二维码扫描是借助于zxing. 功能模块都完全封装好了,不过界面合你口味,直接使用就好,如果不合口味,后面告诉你怎么修改. - 1.cocoaPods导入pod 'LBXScan', '~> 1.1.1' 导入方法看这: - 2.将JQScan文件夹拖到你的工程中(这个是写好的). <code class="language-Objective-C hljs objectivec has-

iOS中静态库-.a文件生成和使用

最近在使用使用一个网上的Demo的时候. 出现另一令人烦恼的问题 . 就是它里面有嵌套的工程. 如下图所示. 工程里面还嵌套有一个工程. 真的是让人煞费苦心 …其实这个问题看起来并不是很难, 如果是一般的工程的话, 解决方法有两种: 我可把嵌套工程里面的文件拖拽出来. 修改一些属性什么的应该可以使用了 还有一种方法就是我把嵌套里面的工程整个生成一个静态库文件.把我需要使用的文件的.h暴露出来使用.但是这个工程比较奇葩. 他里面是c++de一些文件. 如果直接拖拽的话会有各种引用文件错误的问题.

iOS开发中常用第三方库的使用和配置-GDataXML

这篇文章旨在给自己以后需要时能及时的查到,省得每次都去baidu. 1. xml解析库-GDataXML 参考文章:http://blog.csdn.net/tangren03/article/details/7868246 GDataXML下载地址: (1)GDataXML.h/m文件 http://code.google.com/p/gdata-objectivec-client/source/browse/trunk/Source/XMLSupport/ (2)DGataDefines.h