Leopard
由 Picovoice 在加拿大温哥华制作
Leopard 是一个设备端语音识别文本引擎。
- 私有化;所有声音处理都是本地进行。
- 准确度高
- 紧凑和计算效率高
- 跨平台
- Linux (x86_64)、macOS (x86_64, arm64)、Windows (x86_64)
- Android 和 iOS
- Chrome、Safari、Firefox 和 Edge
- Raspberry Pi (4, 3) 和 NVIDIA Jetson Nano
目录
访问键
AccessKey 是您部署 Picovoice SDK(包括 Leopard)的验证和授权令牌。任何使用 Picovoice 的人都需要一个有效的 AccessKey。您必须保密您的 AccessKey。即使在语音识别100%离线运行的情况下,您仍需要连接到互联网以通过 Picovoice 许可证服务器验证您的 AccessKey。
AccessKey 也可验证您的使用是否在账户的权限限制内。所有注册 Picovoice 控制台 的人都享有在此处描述的 免费层
使用权利 在此。如果您想增加您的限制,您可以购买订阅计划。
演示
Python 演示
安装演示包
pip3 install pvleoparddemo
在终端运行以下命令
leopard_demo_file --access_key ${ACCESS_KEY} --audio_paths ${AUDIO_PATH}
将 ${ACCESS_KEY}
替换为您从 Picovoice 控制台获得的 AccessKey,将 ${AUDIO_PATH}
替换为您希望转录的音频文件的路径。
C 演示
构建演示
cmake -S demo/c/ -B demo/c/build && cmake --build demo/c/build
运行演示
./demo/c/build/leopard_demo -a ${ACCESS_KEY} -l ${LIBRARY_PATH} -m ${MODEL_PATH} ${AUDIO_PATH}
将 ${ACCESS_KEY}
替换为您从 Picovoice 控制台获得的 AccessKey,将 ${LIBRARY_PATH}
替换为 lib 下的适当库路径,将 ${MODEL_PATH}
替换为 默认模型文件(或您自定义的文件)的路径,并将 ${AUDIO_PATH}
替换为您希望转录的音频文件的路径。
iOS 演示
运行演示,请访问 demo/ios/LeopardDemo 并运行。
pod install
将文件 ViewModel.swift 中的 let accessKey = "${YOUR_ACCESS_KEY_HERE}"
替换为您的 AccessKey
。
然后,使用 Xcode 打开生成的 LeopardDemo.xcworkspace
并运行应用程序。
Android 演示
使用 Android Studio,将 demo/android/LeopardDemo 作为 Android 项目打开,然后运行应用程序。
将文件 MainActivity.java 中的 "${YOUR_ACCESS_KEY_HERE}"
替换为您的 AccessKey
。
Node.js 演示
安装演示包
yarn global add @picovoice/leopard-node-demo
在终端运行以下命令
leopard-file-demo --access_key ${ACCESS_KEY} --input_audio_file_path ${AUDIO_PATH}
将 ${ACCESS_KEY}
替换为您从 Picovoice 控制台获得的 AccessKey,将 ${AUDIO_PATH}
替换为您希望转录的音频文件的路径。
有关 Node.js 演示的更多信息,请访问 demo/nodejs。
Flutter 演示
在 Android 或 iOS 上使用 Flutter 运行 Leopard 演示,您必须在系统中安装 Flutter SDK。安装后,您可以运行 flutter doctor
以确定相关平台的其他任何缺少要求。一旦您的环境设置完成,请启动模拟器或连接 Android/iOS 设备。
从demo/flutter运行prepare_demo
脚本,并指定语言代码来设置您选择的语言的演示(例如:de
→德语,ko
→韩语)。要查看可用语言的列表,请在不指定语言代码的情况下运行prepare_demo
。
dart scripts/prepare_demo.dart ${LANGUAGE}
将main.dart文件中的"${YOUR_ACCESS_KEY_HERE}"
替换为您的AccessKey
。
从demo/flutter运行以下命令来构建并将演示部署到您的设备
flutter run
运行演示
演示需要cgo
,在Windows上可能意味着您需要安装gcc编译器,例如Mingw,才能正确构建。
从demo/go在终端中运行以下命令来构建和运行demo
go run filedemo/leopard_file_demo.go -access_key "${ACCESS_KEY}" -input_audio_path "${AUDIO_PATH}"
将 ${ACCESS_KEY}
替换为您从 Picovoice 控制台获得的 AccessKey,将 ${AUDIO_PATH}
替换为您希望转录的音频文件的路径。
有关Go演示的更多信息,请访问demo/go。
React Native演示
要运行React Native Leopart演示应用,您首先需要设置React Native环境。有关这些,请参阅React Native的文档。一旦您的环境已设置,请转到demo/react-native,然后运行以下命令
对于Android
yarn android-install # sets up environment
yarn android-run # builds and deploys to Android
对于iOS
yarn ios-install # sets up environment
yarn ios-run
Java演示
Leopard Java演示是一个命令行应用程序,让您可以选择在音频文件或麦克风输入上运行Leopard。
从demo/java在终端中运行以下命令来构建和运行demo
cd demo/java
./gradlew build
cd build/libs
java -jar leopard-file-demo.jar -a ${ACCESS_KEY} -i ${AUDIO_PATH}
将 ${ACCESS_KEY}
替换为您从 Picovoice 控制台获得的 AccessKey,将 ${AUDIO_PATH}
替换为您希望转录的音频文件的路径。
有关Java演示的更多信息,请访问demo/java。
.NET 示例
Leopard .NET 示例 是一个命令行应用程序,允许您在音频文件或实时麦克风输入上运行 Leopard。
从 demo/dotnet/LeopardDemo 在终端中运行以下命令
dotnet run -c FileDemo.Release -- --access_key ${ACCESS_KEY} --input_audio_path ${AUDIO_PATH}
将 ${ACCESS_KEY}
替换为您从 Picovoice 控制台获得的 AccessKey,将 ${AUDIO_PATH}
替换为您希望转录的音频文件的路径。
有关 .NET 示例的更多信息,请访问 demo/dotnet。
Rust 示例
Leopard Rust 示例 是一个命令行应用程序,允许您在音频文件或实时麦克风输入上运行 Leopard。
从 demo/rust/filedemo 在终端中运行以下命令
cargo run --release -- --access_key ${ACCESS_KEY} --input_audio_path ${AUDIO_PATH}
将 ${ACCESS_KEY}
替换为您从 Picovoice 控制台获得的 AccessKey,将 ${AUDIO_PATH}
替换为您希望转录的音频文件的路径。
有关 Rust 示例的更多信息,请访问 demo/rust。
Web 示例
从 demo/web 在终端中运行以下命令
yarn
yarn start
(或)
npm install
npm run start
在您的浏览器中打开 https://:5000
来尝试示例。
SDKs
Python
安装Python SDK
pip3 install pvleopard
创建引擎实例并将音频文件进行转录
import pvleopard
handle = pvleopard.create(access_key='${ACCESS_KEY}')
print(handle.process_file('${AUDIO_PATH}'))
将 ${ACCESS_KEY}
替换为您从Picovoice控制台获取的密钥,将 ${AUDIO_PATH}
替换为音频文件的路径。完成后,请务必使用 handle.delete()
显式释放资源。
C
创建引擎实例并将音频文件进行转录
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include "pv_leopard.h"
pv_leopard_t *handle = NULL;
bool automatic_punctuation = false;
pv_status_t status = pv_leopard_init("${ACCESS_KEY}", "${MODEL_PATH}", automatic_punctuation, &handle);
if (status != PV_STATUS_SUCCESS) {
// error handling logic
}
char *transcript = NULL;
int32_t num_words = 0;
pv_word_t *words = NULL;
status = pv_leopard_process_file(handle, "${AUDIO_PATH}", &transcript, &num_words, &words);
if (status != PV_STATUS_SUCCESS) {
// error handling logic
}
fprintf(stdout, "%s\n", transcript);
for (int32_t i = 0; i < num_words; i++) {
fprintf(
stdout,
"[%s]\t.start_sec = %.1f .end_sec = %.1f .confidence = %.2f\n",
words[i].word,
words[i].start_sec,
words[i].end_sec,
words[i].confidence);
}
pv_leopard_transcript_delete(transcript);
pv_leopard_words_delete(words);
将 ${ACCESS_KEY}
替换为您从Picovoice控制台获取的密钥,将 ${MODEL_PATH}
替换为默认模式文件(或您自定义的模式文件),将 ${AUDIO_PATH}
替换为音频文件的路径。完成后,请务必使用 pv_leopard_delete(handle)
释放资源。
iOS
Leopard iOS绑定通过CocoaPods提供。要将它导入iOS项目,请将以下行添加到您的Podfile中,然后运行pod install
pod 'Leopard-iOS'
创建引擎实例并将音频文件进行转录
import Leopard
let modelPath = Bundle(for: type(of: self)).path(
forResource: "${MODEL_FILE}", // Name of the model file name for Leopard
ofType: "pv")!
let leopard = Leopard(accessKey: "${ACCESS_KEY}", modelPath: modelPath)
do {
let audioPath = Bundle(for: type(of: self)).path(forResource: "${AUDIO_FILE_NAME}", ofType: "${AUDIO_FILE_EXTENSION}")
let result = leopard.process(audioPath)
print(result.transcript)
} catch let error as LeopardError {
} catch { }
将 ${ACCESS_KEY}
替换为您从Picovoice控制台获取的密钥,将 ${MODEL_FILE}
替换为您在控制台或默认模式中训练的模型,将 ${AUDIO_FILE_NAME}
替换为音频文件名,将 ${AUDIO_FILE_EXTENSION}
替换为音频文件扩展名。
Android
要将该包包含到Android项目中,确保您的顶级 build.gradle
文件中已包含 mavenCentral()
,然后将其添加到应用的 build.gradle
dependencies {
implementation 'ai.picovoice:leopard-android:${LATEST_VERSION}'
}
创建引擎实例并将音频文件进行转录
import ai.picovoice.leopard.*;
final String accessKey = "${ACCESS_KEY}"; // AccessKey obtained from Picovoice Console (https://console.picovoice.ai/)
final String modelPath = "${MODEL_FILE}";
try {
Leopard handle = new Leopard.Builder()
.setAccessKey(accessKey)
.setModelPath(modelPath)
.build(appContext);
File audioFile = new File("${AUDIO_FILE_PATH}");
LeopardTranscript transcript = handle.processFile(audioFile.getAbsolutePath());
} catch (LeopardException ex) { }
将 ${ACCESS_KEY}
替换为您从 Picovoice 控制台获得的密钥,将 ${MODEL_FILE}
替换为从 控制台 或 默认模型 获取的自定义训练模型,以及将 ${AUDIO_FILE_PATH}
替换为音频文件的路径。
Node.js
安装 Node.js SDK
yarn add @picovoice/leopard-node
创建 Leopard 类的实例
const Leopard = require("@picovoice/leopard-node");
const accessKey = "${ACCESS_KEY}" // Obtained from the Picovoice Console (https://console.picovoice.ai/)
let handle = new Leopard(accessKey);
const result = engineInstance.processFile('${AUDIO_PATH}');
console.log(result.transcript);
将 ${ACCESS_KEY}
替换为您从 Picovoice 控制台 获取的密钥,并设置 ${AUDIO_PATH}
为音频文件路径。
完成后,请确保使用 release()
释放资源。
handle.release();
Flutter
将 Leopard Flutter 插件 添加到您的 pub.yaml 文件中。
dependencies:
leopard_flutter: ^<version>
创建引擎实例并将音频文件进行转录
import 'package:leopard/leopard.dart';
const accessKey = "{ACCESS_KEY}" // AccessKey obtained from Picovoice Console (https://console.picovoice.ai/)
try {
Leopard _leopard = await Leopard.create(accessKey, '{LEOPARD_MODEL_PATH}');
LeopardTranscript result = await _leopard.processFile("${AUDIO_FILE_PATH}");
print(result.transcript);
} on LeopardException catch (err) { }
将 ${ACCESS_KEY}
替换为从 Picovoice 控制台 获取的 AccessKey
,将 ${MODEL_FILE}
替换为从 Picovoice 控制台 获取的或 默认模型 获取的自定义训练模型,以及将 ${AUDIO_FILE_PATH}
替换为音频文件的路径。
Go
安装 Go 绑定
go get github.com/Picovoice/leopard/binding/go
创建引擎实例并将音频文件进行转录
import . "github.com/Picovoice/leopard/binding/go"
leopard = Leopard{AccessKey: "${ACCESS_KEY}"}
err := leopard.Init()
if err != nil {
// handle err init
}
defer leopard.Delete()
transcript, words, err := leopard.ProcessFile("${AUDIO_PATH}")
if err != nil {
// handle process error
}
log.Println(transcript)
将 ${ACCESS_KEY}
替换为从 Picovoice 控制台 获取的密钥,并设置 ${AUDIO_PATH}
为音频文件路径。最后,完成后请确保显式使用 leopard.Delete()
释放资源。
React Native
Leopard React Native 绑定可通过 NPM 获得。通过以下命令加载数据
yarn add @picovoice/leopard-react-native
创建引擎实例并将音频文件进行转录
import {Leopard, LeopardErrors} from '@picovoice/leopard-react-native';
const getAudioFrame = () => {
// get audio frames
}
try {
const leopard = await Leopard.create("${ACCESS_KEY}", "${MODEL_FILE}")
const { transcript, words } = await leopard.processFile("${AUDIO_FILE_PATH}")
console.log(transcript)
} catch (err: any) {
if (err instanceof LeopardErrors) {
// handle error
}
}
将 ${ACCESS_KEY}
替换为您从 Picovoice 控制台获取的 AccessKey
,将 ${MODEL_FILE}
替换为您从 Picovoice 控制台 获取的自定义训练模型或默认模型,将 ${AUDIO_FILE_PATH}
替换为音频文件的绝对路径。完成后,请务必使用 leopard.delete()
显式释放资源。
Java
最新的 Java 绑定可以从 Maven Central 存储库获得
ai.picovoice:leopard-java:${version}
使用 Leopard Builder 类创建一个引擎实例并转录一个音频文件
import ai.picovoice.leopard.*;
final String accessKey = "${ACCESS_KEY}";
try {
Leopard leopard = new Leopard.Builder().setAccessKey(accessKey).build();
LeopardTranscript result = leopard.processFile("${AUDIO_PATH}");
leopard.delete();
} catch (LeopardException ex) { }
System.out.println(transcript);
将 ${ACCESS_KEY}
替换为您从 Picovoice 控制台 获取的您的 信息,将 ${AUDIO_PATH}
替换为音频文件的路径。最后,完成后请务必使用 leopard.delete()
显式释放资源。
.NET
使用 NuGet 或 dotnet CLI 安装 .NET SDK
dotnet add package Leopard
创建引擎实例并将音频文件进行转录
using Pv;
const string accessKey = "${ACCESS_KEY}";
const string audioPath = "/absolute/path/to/audio_file";
Leopard handle = Leopard.Create(accessKey);
Console.Write(handle.ProcessFile(audioPath));
用您的从 Picovoice 控制台 获取的 ${ACCESS_KEY}
替换它。最后,完成后使用 handle.Dispose()
释放资源。
Rust
首先,您需要在计算机上安装 Rust 和 Cargo。
要将 leopard 库添加到您的应用程序中,将 pv_leopard
添加到您的应用 Cargo.toml
清单中。
[dependencies]
pv_leopard = "*"
使用 LeopardBuilder
实例创建引擎实例并转录音频文件。
use leopard::LeopardBuilder;
fn main() {
let access_key = "${ACCESS_KEY}"; // AccessKey obtained from Picovoice Console (https://console.picovoice.ai/)
let leopard: Leopard = LeopardBuilder::new().access_key(access_key).init().expect("Unable to create Leopard");
if let Ok(leopard_transcript) = leopard.process_file("/absolute/path/to/audio_file") {
println!("{}", leopard_transcript.transcript);
}
}
将 ${ACCESS_KEY}
替换为您从 Picovoice 控制台 获取的信息。
Web
使用yarn安装Web SDK
yarn add @picovoice/leopard-web
或使用npm
npm install --save @picovoice/leopard-web
使用LeopardWorker
创建引擎实例并转录音频文件
import { Leopard } from "@picovoice/leopard-web";
import leopardParams from "${PATH_TO_BASE64_LEOPARD_PARAMS}";
function getAudioData(): Int16Array {
... // function to get audio data
return new Int16Array();
}
const leopard = await LeopardWorker.create(
"${ACCESS_KEY}",
{ base64: leopardParams },
);
const { transcript, words } = await leopard.process(getAudioData());
console.log(transcript);
console.log(words);
将${ACCESS_KEY}
替换为您从Picovoice控制台获得的您的密钥。最后,完成后使用leopard.release()
释放资源。
版本发布
v1.2.0 — 2023年3月27日
- 添加了对法语、德语、意大利语、日语、韩语、葡萄牙语和西班牙语的本地化支持
- 添加了对.NET 7.0的支持,并修复了对.NET Standard 2.0的支持
- 将iOS最低支持版本提升至11.0
- 提高了稳定性和性能
v1.1.0 — 2022年8月11日
- 默认为转录结果添加真实双写功能
- 添加了自动标点插入选项
- 将单词时间戳和置信度作为转录的组成部分返回
- 支持3gp(AMR)和MP4/m4a(AAC)音频文件
- Leopard Web SDK发布
v1.0.0 — 2022年1月10日
- 首次发布