zoukankan      html  css  js  c++  java
  • audiounit变调

    以下内容为金山云视频云技术团队提供:(文字内容转载)
    变声效果主要是在频域上对人的声音进行一定的处理,我们知道男声一般比较低沉,女声比较尖锐,这个主要说的是音调。通过对声音音调的调整,可以 让低沉的男声听上去像尖锐女声。
    iOS 提供了 kAudioUnitSubType_NewTimePitch 的 unit 来实现音调的调整。值得注意的是 kAudioUnitSubType_NewTimePitch 不是输入 Effect 类的,而是属于 FormatConverter 类的。 通过设置 TimePitch unit 的 kNewTimePitchParam_Pitch 属性即可。
    /// pitchShift 为具体数值(0 表示不变,负数表明调低沉,正数调尖锐) AudioUnitSetParameter(pitchUnit, kNewTimePitchParam_Pitch, kAudioUnitScope_Global, 0, pitchShift, 0);
    •变男声,需要强化突出低沉的特点,将音调调低,设置负数参数即可;
    •变女声,需要强化突出尖锐的特点,将音调调高,设置正数即可;
    •机器人音效,机器人的音效是一个组合效果,我们印象中的机器人音效都是老电影中的那种,音调比较高,而且有重音。所以我们采用的是 TimePitch unit + Delay unit 的方式。Delay unit 也是 iOS 提供的一个将声音延时叠加的 unit,但是比混音要简单很多,只有单次叠加;
    •庄严宏大音效,想象一下佛祖之类的声音,一般都是自带回声,而且比较男性化,所以我们选择的是 TimePitch unit + Reverb unit 的方式来实现。
    这里推荐一个自己调音效的参考软件 voxal voice changer。 大家可以在这个软件上自己将不同的工具组件组合起来,调试参数,实时听到参数对应的结果。当效果满意后再移植到 AudioUnit 中。

           AudioComponentDescription convertUnitDescription2;
           convertUnitDescription2.componentManufacturer  = kAudioUnitManufacturer_Apple;
           convertUnitDescription2.componentType          = kAudioUnitType_FormatConverter;
           convertUnitDescription2.componentSubType       = kAudioUnitSubType_NewTimePitch;
           convertUnitDescription2.componentFlags         = 0;
           convertUnitDescription2.componentFlagsMask     = 0;
           AUGraphAddNode (auGraph, &convertUnitDescription2, &convertNode2);
           AUGraphNodeInfo(auGraph,convertNode2,NULL,& converterUnit2);
           
        
     AUGraphConnectNodeInput  : io(in)---effect/mix-----convert(格式转换,速率,音调等)---io(out)
    对于该convert unit,设置一下音频参数
    然后调音调
      Float32 pitchShift = 1000;
      AudioUnitSetParameter(convertAudiounit2, kNewTimePitchParam_Pitch, kAudioUnitScope_Global, 0, pitchShift, 0);
    //其他选项

    kNewTimePitchParam_Rate,

    kNewTimePitchParam_Overlap,

    kNewTimePitchParam_EnablePeakLocking

    
    
  • 相关阅读:
    AWK只打印某个域后的所有域
    Apache配置文件httpd.conf内容翻译
    DOM事件类型详解
    DOM中的事件处理概览与原理的全面剖析
    JavaScript实战(带收放动画效果的导航菜单)
    (转)高性能JavaScript:加载和运行(动态加载JS代码)
    (转)网页性能管理详解
    (转)JavaScript-性能优化之函数节流(throttle)与函数去抖(debounce)
    你真的知道setTimeout是如何运行的吗
    用原生JS读写CSS样式的方法总结
  • 原文地址:https://www.cnblogs.com/8335IT/p/14186473.html
Copyright © 2011-2022 走看看