Leopard-iOS 2.0.1

Leopard-iOS 2.0.1

由以下人员维护:Kwangsoo YeoIan LaveryEric Mikulin



  • Picovoice

Leopard

由 Picovoice 在加拿大温哥华制作

Twitter URL

YouTube Channel Views

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日

  • 首次发布