由位于加拿大的温哥华 Picovoice 制作
Falcon 是一个设备上的扬声器语音分隔引擎。Falcon 是
- 私有的;所有声音处理都在本地进行。
- 跨平台
- Linux (x86_64), macOS (x86_64, arm64), Windows (x86_64)
- Raspberry Pi (3, 4, 5) 和 NVIDIA Jetson Nano
- Android 和 iOS
- Chrome,Safari,Firefox 和 Edge
扬声器分割,自动语音识别和音频处理的基本步骤,专注于在音频记录中识别和分隔不同的说话者。其目标是将在精确标识说话者和他们各自的说话区间的同时,将音频分割成几个段。
AccessKey 是部署包括 Falcon 在内的 Picovoice SDK 的身份验证和授权令牌。使用 Picovoice 的任何人都需要有效的 AccessKey。您必须保密您的 AccessKey。即使扬声器识别在 100% 离线运行,您也需要互联网连接才能使用 Picovoice 许可证服务器验证您的 AccessKey。
AccessKey 还会验证您的使用是否在您的账户限制范围内。所有注册 Picovoice 控制台 的人都获得 此处 描述的 Free Tier
使用权限。如果您想增加您的限制,您可以购买订阅计划。
安装演示包
pip3 install pvfalcondemo
在终端中运行以下命令
falcon_demo_file --access_key ${ACCESS_KEY} --audio_paths ${AUDIO_PATH}
将 ${ACCESS_KEY}
替换为您从 Picovoice 控制台获得的。
有关 Python 演示的更多信息,请访问 demo/python。
构建演示
cmake -S demo/c/ -B demo/c/build && cmake --build demo/c/build
运行演示
./demo/c/build/falcon_demo -a ${ACCESS_KEY} -l ${LIBRARY_PATH} -m ${MODEL_PATH} ${AUDIO_PATH}
从 demo/web 在终端中运行以下命令
yarn
yarn start
(或)
npm install
npm run start
在您的浏览器中打开 https://:5000
以尝试演示。
要运行演示,请转到 demo/ios/FalconDemo 并运行
pod install
将 ViewModel.swift 文件中的 let accessKey = "${YOUR_ACCESS_KEY_HERE}"
替换为您的 AccessKey
。
然后,使用 Xcode 打开生成的 FalconDemo.xcworkspace
并运行应用程序。
使用 Android Studio,将 demo/android/FalconDemo 打开为 Android 项目,然后运行应用程序。
将 MainActivity.java 文件中的 "${YOUR_ACCESS_KEY_HERE}"
替换为您的 AccessKey
。
安装 Python SDK
pip3 install pvfalcon
创建引擎实例并在音频文件上进行扬声器分割
import pvfalcon
falcon = pvfalcon.create(access_key='${ACCESS_KEY}')
print(falcon.process_file('${AUDIO_PATH}'))
将 ${ACCESS_KEY}
替换为您从 Picovoice 控制台 获得的,将 ${AUDIO_PATH}
替换为音频文件的路径。
最后,完成后请确保明确释放资源
falcon.delete()
创建引擎实例并在音频文件上进行扬声器分割
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include "pv_falcon.h"
pv_falcon_t *falcon = NULL;
pv_status_t status = pv_falcon_init("${ACCESS_KEY}", "${MODEL_PATH}", &falcon);
if (status != PV_STATUS_SUCCESS) {
// error handling logic
}
int32_t num_segments = 0;
pv_segment_t *segments = NULL;
status = pv_falcon_process_file(falcon, "${AUDIO_PATH}", &num_segments, &segments);
if (status != PV_STATUS_SUCCESS) {
// error handling logic
}
for (int32_t i = 0; i < num_segments; i++) {
pv_segment_t *segment = &segments[i];
fprintf(
stdout,
"Speaker: %d -> Start: %5.2f, End: %5.2f\n",
segment->speaker_tag,
segment->start_sec,
segment->end_sec);
}
pv_falcon_segments_delete(segments);
将 ${ACCESS_KEY}
替换为您从 Picovoice 控制台获得的代码,将 ${MODEL_PATH}
替换为默认模型文件(或您自定义的文件)的路径,并将 ${AUDIO_PATH}
替换为音频文件的路径。
最后,完成操作后请确保释放所获取的资源。
pv_falcon_delete(falcon);
使用 yarn 安装 Web SDK。
yarn add @picovoice/falcon-web
或者使用 npm。
npm install --save @picovoice/falcon-web
使用 FalconWorker
创建引擎实例并在音频文件上执行说话人分割。
import { Falcon } from '@picovoice/falcon-web';
import falconParams from '${PATH_TO_BASE64_FALCON_PARAMS}';
function getAudioData(): Int16Array {
// ... function to get audio data
return new Int16Array();
}
const falcon = await FalconWorker.create('${ACCESS_KEY}', {
base64: falconParams,
});
const { segments } = await falcon.process(getAudioData());
console.log(segments);
将 ${ACCESS_KEY}
替换为从 Picovoice 控制台 获得的代码。最后,使用 falcon.release()
释放资源。
Falcon iOS 绑定可通过 CocoaPods 获得。要将它导入您的 iOS 项目,在 Podfile 中添加以下行并运行 pod install
pod 'Falcon-iOS'
创建引擎实例并在音频文件上执行说话人分割。
import Falcon
let falcon = Falcon(accessKey: "${ACCESS_KEY}")
do {
let audioPath = Bundle(for: type(of: self)).path(forResource: "${AUDIO_FILE_NAME}", ofType: "${AUDIO_FILE_EXTENSION}")
let segments = falcon.process(audioPath)
} catch { }
将 ${ACCESS_KEY}
替换为从 Picovoice 控制台获得的代码,将 ${AUDIO_FILE_NAME}
替换为音频文件的名称,将 ${AUDIO_FILE_EXTENSION}
替换为音频文件的扩展名。
要将在您的 Android 项目中包括 Falcon 包,请确保您已将 mavenCentral()
包含在顶级 build.gradle
文件中,然后添加以下内容到您的应用程序的 build.gradle
dependencies {
implementation 'ai.picovoice:falcon-android:${LATEST_VERSION}'
}
创建引擎实例并在音频文件上进行扬声器分割
import ai.picovoice.falcon.*;
final String accessKey = "${ACCESS_KEY}"; // AccessKey obtained from Picovoice Console (https://console.picovoice.ai/)
try {
Falcon falcon = new Falcon.Builder()
.setAccessKey(accessKey)
.build(appContext);
File audioFile = new File("${AUDIO_FILE_PATH}");
FalconSegment[] segments = falcon.processFile(audioFile.getAbsolutePath());
} catch (FalconException ex) { }
将 ${ACCESS_KEY}
替换为从 Picovoice 控制台获得的代码,将 ${AUDIO_FILE_PATH}
替换为音频文件的路径。
最后,确认已显式释放资源。
falcon.delete()
有关详细信息,请参阅 Android SDK。
- 首次发布。
您可以在 这里 找到常见问题解答。