版权声明:转载必须注明本文转自张鹏辉的博客: http://blog.csdn.net/qingtiangg

大家好,距离上一篇博客半年过去了,关于上一篇博客很多人加我QQ留言问了几个问题,最近不忙决定解决一下,并写几个文档总结下这半年的经验,这篇文档主要是记录下移植的过程。

统计

1:因为半年前代码用Eclipse写的,有人问我能不能移植到Android Studio 上,可以

2:变声后的文件在哪里?这么保存?问这个问题的肯定没有认真阅读我上一篇博客和看源码。(我这里提供一种解决方案,在最下面认真往下看)

开始

Android Studio NDK目前有两种玩法:
1: ndk-build 、Android.mk、 Application.mk
2: CMake

我也不介绍他俩对比了,第二个是android studio2.2之后主推的,新建ndk项目直接勾选上可以玩了。
既然要移植到android studio上我们也用第二种

开撸:

1.创建新项目(Create New Project)

勾选上 Include C++ Support

接下来和普通创建一样一路 —->Next到下图这个页面

2.配置C++(Customize C++ Support)

你们 C++ Standard 这里应该是默认的Toolchain Default 默认是CMake环境,这里我们用C++11没有为什么,任性。
勾选上 Exceptions Support 、Exceptions Support让其支持C++异常处理然后Finish如下图:

项目创建好,把他帮我们生成的文件删掉,布局以及MainActivity里的不用代码,还有cpp目录下的.cpp文件不需要,之后我们开始做移植吧。

3.拷贝资源文件到 Android Studio

首先看下Eclipse工程下的目录结构:

  • src 目录下的java代码
  • assets 目录下的音频资源
  • jni 目录下的fmod的动态库和c++代码
  • lib 目录下的fmod包
  • res 目录下的图片及布局xml代码和一些资源文件

这些复制黏贴的活我就不贴出来了,主要看下jni目录
刚才创建完成项目后,AS自动帮创建了cpp目录,原jni目录下的inc直接拷过去就好其他不要看图:

在Android studio 里app->libs目录下创建armeabi平台文件夹把libfmod.so和libfmodL.so这俩包放进去看下AS的现在的结构:

fmod.jar放到libs下右键add进去、assets这个目录as没有我们需要自己去创建把音频文件放进去。

4.Android Studio 下生成.h头文件

现在剩下头文件和supersound.cpp这俩关键文件了,因为我包结构不一样所以需要重新生成头文件。
我看了几篇文档AS下有配置直接生成头文件的,我懒不配置了,直接命令行玩吧!

  1. 从Android Studio的Terminal里进入到, /src/main/java 目录下,一定要刀这个文件夹下来执行命令操作。
  2. 执行javah XXX.XX.XXX 即可, XXX.XX.XXX是要生成.h文件的完整路径名,包名+文件名

cd 到目录下 执行javah命令会在当前文件夹下生成.h文件F5刷新目录就有了,把他拷贝到cpp目录下,把原来的supersound.cpp也拷过来,如下图

把.h文件里的这一行代码拷贝到我们原来supersound.cpp文件里替换标红这段代码,以及修改引用头文件的目录地址#include 那里地址变了,如下图:

至此我们资源文件拷贝完毕

5.修改CMakeList.txt构建ndk

看下CMakeList.txt的我直接写好了,简单介绍下

# Sets the minimum version of CMake required to build the native
# library. You should either keep the default value or only pass a
# value of 3.4.0 or lower.cmake_minimum_required(VERSION 3.4.1)find_library( # Sets the name of the path variable.log-liblog )set(distribution_DIR ${CMAKE_SOURCE_DIR}/../../../../libs)add_library( fmodSHAREDIMPORTED )
set_target_properties( fmodPROPERTIES IMPORTED_LOCATION../../../../libs/armeabi/libfmod.so )
add_library( fmodLSHAREDIMPORTED )
set_target_properties( fmodLPROPERTIES IMPORTED_LOCATION../../../../libs/armeabi/libfmodL.so )
add_library( soundSHAREDsrc/main/cpp/supersound.cpp )include_directories(src/main/cpp/inc)target_link_libraries( sound fmod fmodL${log-lib} )

这里不介绍Cmake的使用了附上学习地址官方文档

https://cmake.org/documentation/

中文翻译的简易的 CMake手册

https://www.zybuluo.com/khan-lau/note/254724

最后一步配置build.gradle直接上图了:

可以编译安装玩一玩了
哈哈哈真是愉快的一下午啊

6.结束语-变声后保存解决思路

关于你们说的要保存变声后的声音
不知道你们为什么要保存下来哈哈哈
因为是在播放的时候加入的音轨就像唱歌的时候加入伴奏加入一段钢琴的声音达到变声效果,加了特效。

目前我们是在本机播放变声后的效果,有个哥们他的需求是这边发出去语音对方听到的是变声后效果。然后问我怎么保存说找不到解决方法所以来问我。

我这里给的思路就是我们本地不保存,就把原声发送给接收方,在接收方调fmod进行变声,这么说理解了吗?
发送的时候加上tag标示,这个标示代表用那种变声效果,然后对方点击播放的时候你把他变声了就好了啊!
有时候换一种思路你会发现真的很简单,没必要一直纠结
关键还是在于懒,懒得查资料,那么我们就用简单的方法
这只是一次移植的记录,所以资料我写的不是很详细,如果需要学习哪一方面可以找我,我写教程或者帮你找相关资料都可以。

边移植边查资料还要记录所以文档很乱,有问题来找我QQ:1344670918或者下面留言

项目源码下载地址:

https://github.com/CN-ZPH/
觉得不错请点一个star蛤!
有问题下面留言评论,我看到会回复。

仿QQ语音变声功能实现(二)---移植到android studio 并解决部分问题相关推荐

  1. 仿QQ语音变声功能实现

    版权声明:转载必须注明本文转自张鹏辉的博客: http://blog.csdn.net/qingtiangg 大家好,这是我从业以来第一篇博客,给大家拜个晚年,祝大家鸡年大吉,幸福美满.事业有成.好了 ...

  2. android变声后的文件,仿QQ语音变声功能实现(二)---移植到android studio 并解决部分问题...

    版权声明:转载必须注明本文转自张鹏辉的博客: http://blog.csdn.net/qingtiangg 大家好,距离上一篇博客半年过去了,关于上一篇博客很多人加我QQ留言问了几个问题,最近不忙决 ...

  3. AU变声功能音频调节

    变声功能与音频调节 今天再分享一些关于AU调整音频的方法,变声功能与音频调节. 一.变声功能方法1 说实话我感觉这个功能用于恶搞比较多,男声变女声,女声变娃娃音之类的,现在qq也有类似的语音变声功能, ...

  4. 实时语音变声技术原理解析:“大叔变小萝莉”

    游戏社交化是近年来游戏行业发展的重要趋势,如何提高游戏的社交属性已成为各大游戏厂商游戏策划的重要组成部分.游戏中玩家的互动形式也不再止于语音聊天,有了更为高阶的需求,比如:玩家在"吃鸡&qu ...

  5. 技术系列课|网易云信音视频通话2.0产品中的美声/变声功能

    随着技术的发展,越来越多的直播和社交类产品开始引入RTC功能.新的业务和生态对原本服务于实时通话.视频会议等场景的RTC PaaS产品提出新的需求,原本关注于通话基础功能的设计只能提供基本的交互,并没 ...

  6. 现实版“柯南变声领结”!搜狗输入法“变声”功能发布,千人千声一键转换...

    允中 发自 凹非寺  量子位 报道 | 公众号 QbitAI 不再是动画,也不再是科幻想象,AI再次带来梦想成真一刻. 在动画片<名侦探柯南>中,阿笠博士送给柯南的变声领结是柯南破案的重要 ...

  7. 每日辣评:快手和抖音、爱奇艺巨亏、搜狗输入法变声功能、贝佐斯

    文/王易见 知名科技KOL,四川创业者联盟发起人 QQ:543415188,微信:543415188,广告.约稿.公关.营销.欢迎合作 [快手和抖音谁更能带货?]利用短视频带货已经不是什么新鲜事儿,快 ...

  8. 语音变声器微信小程序源码下载支持多种音效

    如标题所示这就是一款变声器小程序源码 程序支持多种音效生成, 另外支持本地音频文件上传变声 也支持直接录音变声 当然啦,也是支持在线试听的这样可以方便查看每一种效果 好了,不多说了下面来看看小编的测试 ...

  9. android qq语音按钮,科技教程:如何在手机QQ中使用新版QQ语音进度条功能?

    如今越来越多的小伙伴对于如何在手机QQ中使用新版QQ语音进度条功能?这方面的问题开始感兴趣,看似平静的每一天,在每个人身上都在发生着各种各样的故事,因为大家现在都是想要了解到此类的信息,那么既然现在大 ...

最新文章

  1. 更高效的PacBio长read纠错算法的研究
  2. go语言中无法获取goroutine相关的信息
  3. Web报表工具FineReport中JavaScript的使用
  4. html不间断滚动图片,Javascript实现图片不间断滚动的代码
  5. iOS开发UINavigation系列四——导航控制器UINavigationController
  6. 算法提高课-搜索-Flood fill算法-AcWing 1106. 山峰和山谷:flood fill、bfs
  7. [CODEVS1258]关路灯
  8. ffplay的快捷键以及选项
  9. ms access to mysql_Access转MySQL工具
  10. 关于idea的git账号与电脑的git账号不一致的问题。已解决!
  11. java转安卓快吗_安卓开发者要从Java转到Kotlin吗?谷歌说后者支持更多
  12. config.o:文件无法辨识_HAZOP有哪些局限性,及系统生命周期不同阶段的危险辨识...
  13. L2-007 家庭房产 (25分)
  14. MSN网盘SkyDrive
  15. My Sixth-First - 解数独 - By Nicolas
  16. 职场菜鸟捕食指北【相亲篇】
  17. 影响债市行情的主要因素_决定债券收益的十大因素
  18. Mac 必备软件推荐
  19. mybatis入门实例(xml文件配置)
  20. 三级分销系统是什么模式,三级分销模式合法吗?三级分销合法吗

热门文章

  1. Apache部署静态网站
  2. 在TCP/IP网络中,为各种公共服务保留的端口号范围
  3. IP地址 子网掩码 网络号 主机号 网络地址 主机地址以及ip段/数字-如192 168 0 1/24是什么意思
  4. 简约而不简单的文本编辑器Vim
  5. mysql-5.6.17-winx64 安装教程
  6. 高效工作准点下班|工作使用技巧分享一
  7. uni-request的使用
  8. 新媒体短视频运营门槛高吗
  9. sap中re凭证是什么意思_详解SAP ERP中的会计凭证
  10. 2021年高压电工复审考试及高压电工模拟考试题