本文将从功能的选择、授权指引、demo入门到SDK集成,一文带你快速了解并接入sami sdk。
点击链接,确定要体验的功能,授权申请环节需要明确要体验的功能。
离线功能授权(Android/IOS/Windows/Mac)需要Appkey和token方可使用测试,联系对应商务同学获取申请试用-火山引擎
备注:
绑定自定义ApplicationID/BundleID的测试授权
如果已经接入三方正式授权的其他SDK,且已经绑定明确ApplicationID/BundleID,修改其ApplicationID/BundleID时会造成其他三方SDK功能无法使用,或想使用绑定自己包名的授权文件进行测试,可先与对应商务同学进行沟通并阐述具体理由,申请绑定用户自定义的ApplicationID/BundleID进行测试,需注意以下几点:
仅能绑定所需的测试功能
仅能提供4周及以内的绑定测试期
请勿使用自定义绑定ApplicationID/BundleID 的临时测试授权在appstore上线,若产生的功能过期风险,造成线上损失,需自行承担
完成火山引擎账号注册、实名认证并获取账户的access_key、secret_key;开通对应API能力并创建应用:创建应用--音频技术-火山引擎
通过服务鉴权-获取Token--音频技术-火山引擎实时生成token。使用SDK请求服务需要appkey和token两个参数;
注意
备注:如果同时需要在线和离线功能,需要同时走两个途径的申请授权
打开链接下载demo;目前demo内置了"全功能SDK",线上功能都可以体验到,并且包含了多个平台的例子。可以根据下文的介绍跑通对应的demo。
目录介绍
目录 | 介绍 |
---|---|
android_java_demo | android平台,调用Java接口; |
android_native_demo | android平台,调用C/C++接口; |
ios_oc_demo | ios平台,调用Objective-C接口; |
native_demo | win/mac平台,调用C/C++接口 |
dep_libs | 依赖库,主要是网络库,在线能力需要依赖 |
res | 资源文件,demo需要用到的所有模型和配置文件都在这个目录,客户集成到真实产品app中按照接口文档的接受获取对应功能的资源 |
test_file | demo中用到一些测试音频 |
目录介绍
(base) ➜ sami_core_tob_demo git:(update_param) ✗ tree -L 4 ├── dep_libs (依赖库) │ └── ttnet (网络库) ├── native_demo │ ├── cmake # cmake导入sdk和依赖库 │ ├── script # 编译脚本和启动运行脚本 │ ├── sdk # sdk放置目录 │ │ └── mac_sdk │ │ ├── inc │ │ └── lib │ │ └── win_sdk │ │ ├── inc │ │ └── lib │ └── src # 代码资源 │ ├── common # 基础部分:授权和辅助函数 │ ├── dump # 基础工具-调试工具-dump音频 │ ├── aec_v2 # 音频降噪与增强能立集-回声消除-v2版本 │ ├── aec_v3 # 音频降噪与增强能立集-回声消除-v3版本 │ ├── denoise_v2 # 音频降噪与增强能立集-降噪/去混响-v2版本 │ ├── denoise_v3 # 音频降噪与增强能立集-降噪/去混响/去啸叫-v3版本 │ ├── agc # 音频降噪与增强能立集-自动增益 │ ├── effect # 音频处理与变声能力集-预置音效/单音效处理器 │ ├── extractor # 音频处理与变声能力集-音高检测/语音活性检测/音量检测/响度检测/延迟检测/节拍检测能力集 │ ├── karaoke # 智能K歌解决方案 │ ├── loudness_normal # 音量均衡能力集 │ ├── thirdpart # demo层面依赖的第三方库 │ ├── tts # 语音合成能力集 ├── res (demo使用到的模型、配置文件) │ ├── preset # 音频处理与变声能力集-预置音效功能配置文件 │ └── model # 包含了上述能力的需要用到的所有模型,根据使用功能介绍自行判断需要使用的模型 └── test_file (demo需要用到的测试音频文件)
平台 | 要求 |
---|---|
mac |
|
windows |
|
修改native_demo/src/common/define.h中的TOKEN
和APPKEY
cd native_demo/ # Mac ./script/build/build_mac.sh # Win ./script/build/build_win.sh
见功能介绍
注意
注意:win在git bash终端运行脚本,测试内容详见对应脚本脚本内部的说明
能力集 | 功能 | 接口文档 | 介绍 |
---|---|---|---|
基础工具 | dump音频简介 |
| |
音频降噪与增强能力集 | 回声消除 |
| |
降噪/去混响-V2 |
| ||
自动增益 |
| ||
音频处理与变声能力集 | 预置音效 |
| |
音高检测 |
| ||
节拍检测能力集 | 流式节拍检测 |
| |
音量均衡能力集 | 预处理音量均衡 |
| |
语音合成 | 流式语音合成 | api接口: |
|
实现音效、降噪部分能力,主要用于示例怎么在native层集成使用sami的能力,详细调用可以参考native_demo
android C/C++ demo链接的sdk位置为 (以arm64-v8a为例):sami_core_tob_demo/native_demo/sdk/android_sdk/lib/arm64-v8a/libbdaudioeffect.so
(base) ➜ sami_core_tob_demo git:(update_param) ✗ tree -L 4 ├── android_native_demo │ └── android_project (android工程) ├── dep_libs (依赖库) │ ├── ttnet (网络库) ├── native_demo │ └── sdk │ │ └── android_sdk │ │ ├── inc │ │ └── lib ├── res (demo使用到的模型、配置文件) │ ├── preset │ └── model └── test_file (demo需要用到的测试音频文件)
android native demo使用了native demo目录中的编译静态库,如下图中的common_lib
、aec_v2_lib
等,然后通过native-lib.cpp
调用到对应静态库的内容
android studio IDE(下载链接:developer.android.com)
adb tools(下载链接:developer.android.com)
cmake version >= 3.14 (下载链接:Installing CMake)
ndk 建议使用 21.4.7075529,安装方法:
修改app/src/main/java/com/bytedance/android_native_demo/MainActivity.java中的appKey
和token
cd sami_core_tob_demo/android_native_demo ./adb_push.sh
参考下文功能介绍一节
cd sami_core_tob_demo/android_native_demo ./adb_pull.sh
页面 | 介绍 |
---|---|
页面activity: |
sdk(aar格式)和资源文件存放在android_java_demo对应目录下,ttnet存放于上层目录dep_libs下
➜ sami_core_tob_demo git:(master) ✗ tree -L 4 ├── android_java_demo │ ├── android_project │ └── sdk │ └── android_sdk │ └── audiosdk-tob.aar ├── dep_libs │ └── ttnet (network lib) ├── res # (demo使用到的模型、配置文件) │ ├── preset │ └── model └── test_file # (audio file for test)
android_java_demo/android_project目录
(base) ➜ android_project git:(feat/chenmanjia/use_audio_io) ✗ tree -L 11 app ├── build.gradle #写明SDK等各种依赖 └── src └── main ├── AndroidManifest.xml ├── java │ └── * #为显示简洁,省略了包名目录com.bytedance.sami.audio │ └── demo │ ├── AssetsFileCopyWorker.java │ ├── FunctionHelper.java │ ├── HeadsetDeviceManager.kt #耳机设备监听 │ ├── MainActivity.java │ ├── audioformat │ │ └── AudioFormatCustom.java #音频格式结构体,用于编解码、播放录音 │ ├── decoder #解码相关 │ │ ├── DecoderBase.java │ │ ├── HwDecoder.java │ │ └── WavDecoder.java │ ├── encoder #wav编码 │ │ └── WavEncoder.java │ ├── player #播放器 │ │ └── Player.java │ ├── recoder #播放器 │ │ └── Recorder.java │ ├── samicoreactivity #相关的功能页面,具体见功能介绍 │ │ ├── AECV2Activity.java │ │ ├── AECV3Activity.java │ │ ├── AGCActivity.java │ │ ├── BeatTrackingActivity.java │ │ ├── BeatTrackingOfflineActivity.java │ │ ├── DeNoiseDeReverbDeHowlingV3Activity.java │ │ ├── DenoiseV2Activity.java │ │ ├── KaraokeEditActivity.java │ │ ├── KaraokeRecordActivity.java │ │ ├── LoudNormActivity.java │ │ ├── LoudNormRealTimeActivity.java │ │ ├── PresetEffectProcessorActivity.java │ │ └── SignalEffectProcessorActivity.java │ ├── samicoredemo #实现相关功能的主体主体逻辑 │ │ ├── AECV2Demo.java │ │ ├── AECV3Demo.java │ │ ├── AGCDemo.java │ │ ├── DeNoiseDeReverbDeHowlingV3Demo.java │ │ ├── DenoiseV2Demo.java │ │ ├── ExtractorDemo.java │ │ ├── LoudNormDemo.java │ │ ├── LoudNormRealTimeDemo.java │ │ ├── NonStreamTTSTest.java │ │ ├── PresetEffectProcessorDemo.java │ │ ├── SAMIKaraokeEditDemo.java │ │ ├── SAMIKaraokeRecordDemo.java │ │ ├── SignalEffectProcessorDemo.java │ │ └── StreamTTSTest.java │ └── samicorehelper #对SDK进行封装,使用更加便捷 │ ├── SAMICoreAEC.java │ ├── SAMICoreAECV3.java │ ├── SAMICoreAEDSingDetection.java │ ├── SAMICoreAGC.java │ ├── SAMICoreDenoiseV2.java │ ├── SAMICoreExtractor.java │ ├── SAMICoreLoudNorm.java │ ├── SAMICoreLoudNormRealTime.java │ ├── SAMICoreMixToken.java │ ├── SAMICorePresetEffectProcessor.java │ └── SAMICoreSignalEffectProcessor.java └── res └── layout #页面UIxml
android studio IDE(下载链接:developer.android.com)
修改MainActivity.java中的appKey
和token
音频降噪与增强能力集
功能 | 接口文档 | 页面 | 介绍 |
---|---|---|---|
降噪/去混响/去啸叫-v3 | 页面activity:
| ||
降噪/去混响-V2 | 推荐优先使用“降噪/去混响/去啸叫-v3” | ||
回声消除-V3 | 页面activity:
| ||
回声消除-V2 | 推荐优先使用“回声消除-V3” | ||
自动增益 | 页面activity:
|
音频处理与变声能力集
功能 | 接口文档 | 页面 | 介绍 |
---|---|---|---|
预置音效 | 页面activity:
| ||
单音效处理器 | 页面activity:
|
节拍检测能力集
功能 | 接口文档 | 页面 | 介绍 |
---|---|---|---|
流式节拍检测 | 页面activity:
| ||
非流式节拍检测 | 页面activity:
|
音量均衡能力集
功能 | 接口文档 | 页面 | 介绍 |
---|---|---|---|
预处理音量均衡 | 页面activity:
| ||
实时音量均衡 | 页面activity:
|
K歌解决方案
功能 | 接口文档 | 页面 | 介绍 |
---|---|---|---|
K歌解决方案 | 录制页
| ||
编辑页
|
sdk(.a格式)和资源文件存放在ios_oc_demo对应目录下,ttnet存放于上层目录dep_libs下
➜ sami_core_tob_demo git:(master) ✗ tree -L 4 ├── ios_oc_demo │ ├── ios_project │ └── ios_sdk │ ├── inc │ └── lib │ └── libbdaudioeffect.a ├── dep_libs │ └── ttnet (network lib) ├── res (demo使用到的模型、配置文件) │ ├── preset │ └── model └── test_file (audio file for test)
ios_oc_demo/SAMIAudioDemo目录
➜ ios_project git:(master) ✗ tree -L 11 SAMIAudioDemo SAMIAudioDemo ├── app #存放与app启动相关类(main、AppDelegate) ├── help #实现相关功能的主体逻辑 │ ├── SAMICoreAecV2.h │ ├── SAMICoreAecV2.m │ ├── SAMICoreAecV3.h │ ├── SAMICoreAecV3.m │ ├── SAMICoreAgc.h │ ├── SAMICoreAgc.m │ ├── SAMICoreBase.h │ ├── SAMICoreDenoiseV2.h │ ├── SAMICoreDenoiseV2.m │ ├── SAMICoreDenoiseV3.h │ ├── SAMICoreDenoiseV3.m │ ├── SAMICoreFunctionDefine.h │ ├── SAMICoreKaraokeEditHelp.h │ ├── SAMICoreKaraokeEditHelp.mm │ ├── SAMICoreKaraokeRecordHelp.h │ ├── SAMICoreKaraokeRecordHelp.mm │ ├── SAMICoreLoudnorm.h │ ├── SAMICoreLoudnorm.m │ ├── SAMICoreNonStreamingBeatDetection.h │ ├── SAMICoreNonStreamingBeatDetection.m │ ├── SAMICoreNonStreamingTTS.h │ ├── SAMICoreNonStreamingTTS.m │ ├── SAMICorePresetEffect.h │ ├── SAMICorePresetEffect.m │ ├── SAMICoreRealTimeLoudnorm.h │ ├── SAMICoreRealTimeLoudnorm.m │ ├── SAMICoreSingleEffect.h │ ├── SAMICoreSingleEffect.m │ ├── SAMICoreStreamingBeatDetection.h │ ├── SAMICoreStreamingBeatDetection.m │ ├── SAMICoreStreamingTTS.h │ ├── SAMICoreStreamingTTS.m │ ├── SAMICoreTokenVerify.h │ └── SAMICoreTokenVerify.m ├── res #存放sdk所需资源 ├── utils #工具类 │ ├── AudioUnitBackend.h #播放器 │ ├── AudioUnitBackend.mm │ ├── CircleBuffer.h #循环队列,作为播放器与sdk之间的缓冲队列 │ ├── CircleBuffer.mm │ ├── FilePlayer.h #文件播放器,封装上述播放器实现简易文件播放 │ └── FilePlayer.m ├── view #相关的功能页面,具体见功能介绍 │ ├── MainViewController.h │ ├── MainViewController.m │ ├── SAMICoreAecV2ViewController.h │ ├── SAMICoreAecV2ViewController.m │ ├── SAMICoreAecV3ViewController.h │ ├── SAMICoreAecV3ViewController.m │ ├── SAMICoreAgcViewController.h │ ├── SAMICoreAgcViewController.m │ ├── SAMICoreDenoiseV2ViewController.h │ ├── SAMICoreDenoiseV2ViewController.m │ ├── SAMICoreDenoiseV3ViewController.h │ ├── SAMICoreDenoiseV3ViewController.m │ ├── SAMICoreKaraokeEditViewController.h │ ├── SAMICoreKaraokeEditViewController.m │ ├── SAMICoreKaraokeRecordViewController.h │ ├── SAMICoreKaraokeRecordViewController.m │ ├── SAMICoreLoudnormViewController.h │ ├── SAMICoreLoudnormViewController.m │ ├── SAMICoreNonStreamingBeatDetectionViewController.h │ ├── SAMICoreNonStreamingBeatDetectionViewController.m │ ├── SAMICoreNonStreamingTTSViewController.h │ ├── SAMICoreNonStreamingTTSViewController.m │ ├── SAMICorePresetEffectViewController.h │ ├── SAMICorePresetEffectViewController.m │ ├── SAMICoreRealTimeLoudnormViewController.h │ ├── SAMICoreRealTimeLoudnormViewController.m │ ├── SAMICoreSingleEffectViewController.h │ ├── SAMICoreSingleEffectViewController.m │ ├── SAMICoreStreamingBeatDectionViewController.m │ ├── SAMICoreStreamingBeatDetectionViewController.h │ ├── SAMICoreStreamingTTSViewController.h │ ├── SAMICoreStreamingTTSViewController.m │ └── utils_view │ ├── InfoLabel.h │ ├── InfoLabel.m │ ├── SingleEffectParamView.h │ └── SingleEffectParamView.m └── view_res
Xcode(App Store下载)
修改MainViewController.mm中的appkey
和token
音频降噪与增强能力集
功能 | 接口文档 | 页面 | 介绍 |
---|---|---|---|
降噪/去混响/去啸叫-v3 | 页面viewController:
| ||
降噪/去混响-V2 | 推荐优先使用“降噪/去混响/去啸叫-v3” | ||
回声消除-V3 | 页面viewController:
| ||
回声消除-V2 | 推荐优先使用“回声消除-V3” | ||
自动增益 | 页面viewController:
|
音频处理与变声能力集
功能 | 接口文档 | 页面 | 介绍 |
---|---|---|---|
预置音效 | 页面viewController:
| ||
单音效处理器 | 页面viewController:
|
节拍检测能力集
功能 | 接口文档 | 页面 | 介绍 |
---|---|---|---|
流式节拍检测 | 页面viewController:
| ||
非流式节拍检测 | 页面viewController:
|
音量均衡能力集
功能 | 接口文档 | 页面 | 介绍 |
---|---|---|---|
预处理音量均衡 | 页面viewController:
| ||
实时音量均衡 | 页面viewController:
|
K歌解决方案
功能 | 接口文档 | 页面 | 介绍 |
---|---|---|---|
K歌解决方案 | 录制页
| ||
编辑页
|
根据功能列表找到要下载的sdk类别,目前有纯离线能力SDK、纯在线能力SDK、全功能(离线+在线)SDK
根据实际需求下载对应平台的SDK
资源文件:所有官网涉及到的能力的模型或者配置文件在在资源文件中,客户下载后可以根据接口文件的介绍获取对应的文件。
依赖库:如果使用在线能力需要依赖网络库,如果纯离线能力可以不用下载。
集成指南:SDK集成指南--音频技术-火山引擎
参考集成指南完成SDK集成到业务APP工程中
常见错误码 :SDK FAQ--音频技术-火山引擎