Koala
由 Picovoice 在加拿大温哥华制作
Koala 是一个设备端噪声抑制引擎。Koala 是:
- 私有;所有语音处理都在本地进行。
- 跨平台
- Linux (x86_64), macOS (x86_64, arm64), Windows (x86_64)
- Android 和 iOS
- Chrome、Safari、Firefox 和 Edge
- 树莓派 (4, 3) 和 NVIDIA Jetson Nano
目录
AccessKey
AccessKey 是您部署 Picovoice SDK(包括 Koala)的认证和授权令牌。 anyone who is using Picovoice needs to have a valid AccessKey. 您必须保密您的 AccessKey。尽管噪声抑制运行在100%离线状态下,您仍需要网络连接来将与 Picovoice 许可证服务器验证您的 AccessKey。
AccessKey 还会验证您的使用是否在账户的限制范围内。所有注册 Picovoice Console 的人都会获得这里描述的 免费层
使用权限 [这里]。如果您想增加您的限制,可以购买订阅计划。
示例
Python 示例
安装示例包
pip3 install pvkoalademo
koala_demo_mic --access_key ${ACCESS_KEY} --output_path ${WAV_OUTPUT_PATH}
koala_demo_file \
--access_key ${ACCESS_KEY} \
--input_path ${WAV_INPUT_PATH} \
--output_path ${WAV_OUTPUT_PATH}
将 ${ACCESS_KEY}
替换为您从 Picovoice Console 获取的您的 AccessKey
。
Android 示例
使用 Android Studio,将 demo/android/Activity 作为 Android 项目打开,然后运行应用程序。
将文件 MainActivity.java 中的 "${YOUR_ACCESS_KEY_HERE}"
替换为您的 AccessKey
。
iOS 示例
将您的 AccessKey
复制到 ACCESS_KEY
变量中,该变量位于 ViewModel.swift
。
在构建示例应用程序之前,从 KoalaDemo
目录运行以下命令以安装 Koala-iOS
CocoaPod。
pod install
打开 KoalaDemo.xcworkspace 并运行示例。
C 示例
构建示例
cmake -S demo/c/ -B demo/c/build && cmake --build demo/c/build --target koala_demo_mic
列出可用的音频输入设备
./demo/c/build/koala_demo_mic -s
运行示例
./demo/c/build/koala_demo_mic -l ${LIBRARY_PATH} -m ${MODEL_PATH} -a ${ACCESS_KEY} -o ${WAV_OUTPUT_PATH}
将 ${LIBRARY_PATH}
替换为位于 lib 目录下相应的库路径,将 ${MODEL_PATH}
替换为位于 lib/common 目录下的模型文件路径,将 ${ACCESS_KEY}
替换为从 Picovoice 控制台 获得的 AccessKey,将 ${WAV_OUTPUT_PATH}
替换为一个用于存储增强音频的 .wav
文件路径。使用 Ctrl+C
终止示例。
有关 C 示例的更多信息,请访问 demo/c。
Web 示例
从 demo/web 在终端运行以下命令
yarn
yarn start
(或)
npm install
npm run start
在浏览器中打开 https://:5000
以尝试示例。
SDKs
Python
安装 Python SDK
pip3 install pvkoala
创建引擎实例并在实时中增强音频
import pvkoala
koala = pvkoala.create(access_key='${ACCESS_KEY}')
将 ${ACCESS_KEY}
替换为您从 Picovoice Console 获取的您的 AccessKey
。
def get_next_audio_frame():
pass
while True:
enhanced_audio = koala.process(get_next_audio_frame())
最后,使用 koala.delete()
显式释放资源。
Android
要在您的Android项目中包含此软件包,请确保在您的顶级build.gradle
文件中包含了mavenCentral()
,然后在您的app的build.gradle
文件中添加以下内容:
dependencies {
implementation 'ai.picovoice:koala-android:${LATEST_VERSION}'
}
创建引擎实例并在实时中增强音频
import ai.picovoice.koala.*;
final String accessKey = "${ACCESS_KEY}"; // AccessKey obtained from Picovoice Console (https://console.picovoice.ai/)
short[] getNextAudioFrame() {
// .. get audioFrame
return audioFrame;
}
try {
Koala koala = new Koala.Builder()
.setAccessKey(accessKey)
.build(appContext);
while true {
short[] enhancedFrame = koala.process(getNextAudioFrame());
};
} catch (KoalaException ex) { }
将${ACCESS_KEY}
替换为您从Picovoice控制台获取的您的密钥。
iOS
创建引擎实例以提高音频
import Koala
do {
let koala = try Koala(accessKey: "${ACCESS_KEY}")
} catch {}
func getNextAudioFrame() -> [Int16] {
// .. get a frame of audio
return audioFrame;
}
while true {
do {
let enhancedAudio = try koala.process(getNextAudioFrame())
// .. use enhanced audio
} catch {}
}
将${ACCESS_KEY}
替换为您从Picovoice控制台获取的您的密钥。
如果下一个音频帧不直接跟在之前的一个之后,请调用koala.reset()
。
完成时要确保显式释放资源,使用koala.delete()
。
C
include/pv_koala.h头文件包含相关信息。创建对象实例
pv_koala_t *handle = NULL;
const char *model_path = "${MODEL_PATH}";
pv_status_t status = pv_koala_init(${ACCESS_KEY}, model_path, &handle);
if (status != PV_STATUS_SUCCESS) {
// error handling logic
}
将${ACCESS_KEY}
替换为您从Picovoice控制台获取的访问密钥,并将${MODEL_PATH}
替换为在lib/common下可用的模型文件路径。
现在可以使用handle
在实时中增强音频
extern const int16_t *get_next_audio_frame(void);
const int32_t frame_length = pv_koala_frame_length();
int16_t *enhanced_pcm = (int16_t *) malloc(frame_length * sizeof(int16_t));
while (true) {
const int16_t *pcm = get_next_audio_frame();
const pv_status_t status = pv_koala_process(handle, pcm, enhanced_pcm);
if (status != PV_STATUS_SUCCESS) {
// error handling logic
}
}
最后,完成时要确保释放所获取的资源
pv_koala_delete(handle);
Web
使用yarn安装Web SDK
yarn add @picovoice/koala-web
或使用npm
npm install --save @picovoice/koala-web
使用KoalaWorker
创建引擎实例,并在实时中增强音频
import { Koala } from "@picovoice/koala-web";
import koalaParams from "${PATH_TO_BASE64_KOALA_PARAMS}";
function processCallback(enhancedPcm) {
// do something with enhancedPcm
}
function getAudioData(): Int16Array {
... // function to get audio data
return new Int16Array();
}
const koala = await KoalaWorker.create(
"${ACCESS_KEY}",
processCallback,
{ base64: koalaParams },
);
await koala.reset();
for (;;) {
await koala.process(getAudioData());
}
将 ${ACCESS_KEY}
替换为您从 Picovoice 控制台 获得的信息。最后,完成操作后,使用 koala.release()
释放资源。
发行版
v1.0.0 2023年2月7日
- 首次发布。