美文网首页
NDK实现QQ语音变声功能

NDK实现QQ语音变声功能

作者: 佼佼者Mr | 来源:发表于2020-05-11 23:19 被阅读0次

实现语音调节效果

利用fmog (官网:https://www.fmod.com/)

    fmog并不是开源库,是收费的,但是有试用版本,一些简单的效果还是可以实现的

流程

1,在cmake中头文件导入

2,源码/预编译库+jar

        预编译库+jar:​

        2.1 jar导入​

        2.2 预编译库导入jniLibs(如果不是默认jinLibs文件中,否则需要在gradle中配置)

        2.3 cmakelists中链接预编译库

1, 播放声音

2,给声音加上特效

3,释放资源。。

#include "com_netease_voicechange_MainActivity.h"

#include "fmod.hpp"

#include

#include

#include

using namespace FMOD;

extern "C"

JNIEXPORT void JNICALL

Java_com_example_qqvoicechange_MainActivity_voiceChangeNative(JNIEnv *env, jobject thiz, jint mode,

                                                              jstring voice_path_) {

const char *voice_path = env->GetStringUTFChars(voice_path_, 0);

    System *system;//fmod音效引擎系统

    Sound *sound;//声音

    Channel *channel =0;//通道

    DSP *dsp =0;

    System_Create(&system);//1.创建系统

    system->init(32, FMOD_INIT_NORMAL, 0);//2.初始化系统

    system->createSound(voice_path, FMOD_DEFAULT, 0, &sound);//3.创建声音

    system->playSound(sound, 0, false, &channel);//4.播放)

    switch (mode) {

case com_netease_voicechange_MainActivity_MODE_NORMAL:

system->playSound(sound, 0, false, &channel);//4.播放)

            break;

        case com_netease_voicechange_MainActivity_MODE_LUOLI:

__android_log_print(ANDROID_LOG_ERROR,"projectname","test");

//萝莉音效 音调高

            system->createDSPByType(FMOD_DSP_TYPE_PITCHSHIFT, &dsp);

            dsp->setParameterFloat(FMOD_DSP_PITCHSHIFT_PITCH, 2.0);

            channel->addDSP(0, dsp);

break;

        case com_netease_voicechange_MainActivity_MODE_DASHU:

//大叔音效 音调低

            system->createDSPByType(FMOD_DSP_TYPE_PITCHSHIFT, &dsp);

            dsp->setParameterFloat(FMOD_DSP_PITCHSHIFT_PITCH, 0.8f);

            channel->addDSP(0, dsp);

break;

        case com_netease_voicechange_MainActivity_MODE_JINGSONG:

break;

        case com_netease_voicechange_MainActivity_MODE_GAOGUAI:

//搞怪音效 频率快

            //获取原始声音的频率

            float frequency;

            channel->getFrequency(&frequency);

            channel->setFrequency(frequency *1.5f);

break;

        case com_netease_voicechange_MainActivity_MODE_KONGLING:

//空灵音效

            system->createDSPByType(FMOD_DSP_TYPE_ECHO, &dsp);

            dsp->setParameterFloat(FMOD_DSP_ECHO_DELAY, 200);

            dsp->setParameterFloat(FMOD_DSP_ECHO_FEEDBACK, 10);

            channel->addDSP(0, dsp);

break;

    }

//判断是否播放完

    bool isPlaying =true;

    while (isPlaying) {

channel->isPlaying(&isPlaying);

        usleep(1000 *1000);

    }

//5.释放

    sound->release();

    system->close();

    system->release();

    env->ReleaseStringUTFChars(voice_path_, voice_path);

}

相关文章

  • NDK实现QQ语音变声功能

    实现语音调节效果 利用fmog (官网:https://www.fmod.com/) fmog并不是开源库,是...

  • 仿QQ语音变声功能实现

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

  • NDK与JNI

    NDK开发—仿QQ变声器Android NDK开发IPCInvoker跨进程调用Android鬼点子-通过Goog...

  • NDK—QQ变声效果实现

    上一节我们知道了怎么去搭建QQ变声所需要的一些环境,今天我们就来真正的去实现QQ变声的效果了,废话不多说,我们开始...

  • Android - 实现录音变声播放

    变声功能大家都接触过,比如qq中发送一段变声消息,网络视频中演员经过处理的声音。其实这个功能实现起来并不复杂,因为...

  • NDK—QQ变声环境搭建

    说起QQ变声效果大家并不陌生,这是用的啥技术呢?其实它使用到了fmod的东西,现在我们就来研究一下变声技术 fmo...

  • 千变语音v5.1.9官方正版

    千变语音是一款功能非常强大的变声器,软件支持qq和微信,能够大道100%的声音变声。让你的声音不在是平凡而又普通,...

  • Swift-语音变声播放

    QQ里面的变声功能是不是很搞笑?想要实现这样的功能?其实很简单,只需要使用音频引擎(AVAudioEngine)来...

  • NDK开发—仿QQ变声器

    1、实现功能前的准备 这是我学习NDK的一个练手项目。虽然最后实现的结果并不是非常专业,但是确实能改变声音的音色,...

  • 乔碧萝复出,小哥哥来玩一局游戏呗!NDK开发:仿QQ变声器

    1、实现功能前的准备 这是我学习NDK的一个练手项目。虽然最后实现的结果并不是非常专业,但是确实能改变声音的音色,...

网友评论

      本文标题:NDK实现QQ语音变声功能

      本文链接:https://www.haomeiwen.com/subject/iagsnhtx.html