文档章节

soundtouch源码分析

sitexa
 sitexa
发布于 2015/03/09 10:17
字数 571
阅读 180
收藏 1

1.soundtouch官网:http://www.surina.net/soundtouch/。这上面有soundtouch的介绍、源码,封装好的dll文件、使用方法、以及一些demo。这上面demo做的不好。

2.一个利用java的jni调用soundtouch非常短小精悍的java swing界面小程序:http://www.aplu.ch/home/apluhomex.jsp?site=44

3.csdn suhetao做的soundtouch源码分析:http://blog.csdn.net/suhetao/article/details/5843480

4.关于声音处理的一个理论网页:http://www.surina.net/article/time-and-pitch-scaling.html

5.其他资料:http://baosu.iteye.com/blog/1840054

      http://baosu.iteye.com/blog/1843031

      http://blog.csdn.net/leilu2008/article/details/6724354


1. 音频采集

   这点主要是通过Android设备的麦克风实时采集音频,由于Android平台的MediaRecorder类录制音频到文件,虽然可以通过空设备回调获得实时的音频流,不过为了降低开发者的难度,Android开发网推荐使用正统的AudioRecord和AudioTrack,首先我们仍然需要加入android.permission.RECORD_AUDIO这个权限。

android.media.AudioRecord类的read方法主要有 3 种重载形式:
 
int   read( short [] audioData,  int  offsetInShorts,  int  sizeInShorts)    //short在java中占用两个字节
int   read( byte [] audioData,  int  offsetInBytes,  int  sizeInBytes)   //byte在java中占用一个字节
int   read(ByteBuffer audioBuffer,  int  sizeInBytes)   //基于NIO的ByteBuffer类型

 我们可以看到从麦克风中获取的音频无需经过文件系统直接通过AudioRecord类的read方法读入到我们预定的缓冲区中,这里需要注意的是采样率的大小必须有足够的缓冲区空间处理

 

  2. 变声处理

  这点需要一些基本的音频处理方式,比如移调、变速,Android开发网推荐大家参考Adobe Audition的早期Cool Editi泄露的代码,当然音频处理算法比较多,大家可以自己实现。

 

  3. 播放原始音频流

  同样,处理完后考虑到效率我们仍然直接从内存流中播放,最简单的就是AudioTrack类,通过android.media.AudioTrack类的write方法,让Android声卡播放原始音频流。两种重载方法如下

int   write( short [] audioData,  int  offsetInShorts,  int  sizeInShorts)
int   write( byte [] audioData,  int  offsetInBytes,  int  sizeInBytes)


4,编译NDK:http://soundtouch.surina.net/README-SoundTouch-Android.html


© 著作权归作者所有

共有 人打赏支持
sitexa
粉丝 0
博文 8
码字总数 1772
作品 0
长沙
私信 提问
Linking CXX shared library ..\..\..\..\build\intermediates\cmake\debug\obj\x86\libnative-lib.so FAI

报如下的错: Build command failed. Error while executing process D:workadt-bundlesdkcmake3.6.4111459bincmake.exe with arguments {--build D:workworkplacestudioworkspaceMyMusic1811......

犀牛有脾气
2018/11/21
0
0
在ios中使用soundtouch库实现变声

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

无鸯
2011/09/23
7.1K
5
MPC-HC 1.7.8 发布,Windows 媒体播放器

MPC-HC 1.7.8 发布,此版本现已提供下载:MPC-HC.1.7.8.x64.zip (16.7 MB)。 此版本更新内容如下: + DVB: Show current event time in the status bar + DVB: Add context menu to the navi......

oschina
2015/01/26
2.8K
11
Android 怎么实现变声呀   如:男声变女声,男声变机器人声,女声变童声这样的用户体验效果.

实现魔音的思路: 1)获取通话音频流.2)把获取到的音频流通过某种算法,某种数字处理技术,改变原有音频流.3)将改变后的音频流传出去,让通话对方听到改变后的音频流,感觉到说话方声音的变化. ①:...

wang.shuai
2011/07/27
13.8K
4
MPC-HC 1.7.9 发布,Windows 媒体播放器

MPC-HC 1.7.9 发布,该版本现已提供下载:mpc-hc-1.7.9.zip (13.2 MB) 更新内容如下: + Internal Subtitle Renderer: Convert colorspace of subtitles to match video. + Append files to ......

oschina
2015/06/01
1K
10

没有更多内容

加载失败,请刷新页面

加载更多

dockerfile 镜像构建(1)

通用dockerfile 利用已经编译好的.jar 来构建镜像。要构建的目录如下: [root@iZuf61quxhnlk9m2tkx16cZ demo_jar]# docker build -t demo:1 . 运行镜像: [root@iZuf61quxhnlk9m2tkx16cZ de...

Canaan_
29分钟前
0
0
Redis radix tree源码解析

Redis实现了不定长压缩前缀的radix tree,用在集群模式下存储slot对应的的所有key信息。本文将详述在Redis中如何实现radix tree。 核心数据结构 raxNode是radix tree的核心数据结构,其结构体...

阿里云云栖社区
32分钟前
5
0
vue import 传入变量

在做动态添加component的时候,传入变量就会报错,出现以下错误信息: vue-router.esm.js?fe87:1921 Error: Cannot find module '@/components/index'. at eval (eval at ./src/components ......

朝如青丝暮成雪
34分钟前
0
0
Flutter开发 Dio拦截器实现token验证过期的功能

前言: 之前分享过在Android中使用Retrofit实现token失效刷新的处理方案,现在Flutter项目也有“token验证过期”的需求,所以接下来我简单总结一下在Flutter项目中如何实现自动刷新token并重...

EmilyWu
35分钟前
6
0
final Map可以修改内容,final 常量不能修改

1.final Map 可以put元素,但是不可以重新赋值 如: final Map map = new HashMap(); map = new HashMap();//不可以 因为栈中变量map引用地址不能修改 2.final str = “aa”; str = "bb";/......

qimh
38分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部