Project Icon

leopard

本地运行的跨平台语音转文字引擎

Leopard是一款本地运行的语音转文字引擎,具有高精度、隐私保护和跨平台特性。该引擎支持多种编程语言和平台,包括iOS、Android和Web等。Leopard提供简单易用的API,便于集成到各类应用中,实现优质的语音识别功能。其紧凑高效的设计适用于多种设备,为开发者提供灵活强大的语音转文字解决方案。

Leopard

GitHub 发布 GitHub

Crates.io Maven Central Maven Central npm npm npm npm Nuget CocoaPods Pub 版本 PyPI Go 参考

由加拿大温哥华的 Picovoice 制作

Twitter URL YouTube 频道观看次数

Leopard 是一个设备本地的语音转文字引擎。Leopard 具有以下特点:

  • 隐私保护:所有语音处理在本地进行。
  • 准确
  • 体积小且计算效率高
  • 跨平台:
    • Linux (x86_64)、macOS (x86_64, arm64)、Windows (x86_64)
    • Android 和 iOS
    • Chrome、Safari、Firefox 和 Edge
    • Raspberry Pi (3, 4, 5) 和 NVIDIA Jetson Nano

目录

AccessKey

AccessKey 是您用于部署 Picovoice SDK(包括 Leopard)的身份验证和授权令牌。使用 Picovoice 的任何人都需要有一个有效的 AccessKey。您必须保密您的 AccessKey。即使语音识别是 100% 离线运行的,您仍然需要互联网连接来验证您的 AccessKey 与 Picovoice 许可服务器的有效性。 AccessKey还验证您的使用是否在账户限制范围内。所有在Picovoice Console注册的用户都会获得这里描述的"免费套餐"使用权限。如果您想增加使用限制,可以购买订阅计划。

语言支持

演示

Python演示

安装演示包:

pip3 install pvleoparddemo

在终端中运行以下命令:

leopard_demo_file --access_key ${ACCESS_KEY} --audio_paths ${AUDIO_FILE_PATH}

${ACCESS_KEY}替换为您从Picovoice Console获得的密钥,将${AUDIO_FILE_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_FILE_PATH} ${AUDIO_FILE_PATH}

${ACCESS_KEY}替换为您从Picovoice Console获得的密钥,${LIBRARY_PATH}替换为lib下适当的库路径,${MODEL_FILE_PATH}替换为默认模型文件的路径(或您的自定义模型),${AUDIO_FILE_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_FILE_PATH}

${ACCESS_KEY}替换为您从Picovoice Console获得的密钥,将${AUDIO_FILE_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

Go演示

该演示需要cgo,在Windows上可能意味着您需要安装gcc编译器(如Mingw)才能正确构建。

demo/go在终端中运行以下命令来构建和运行文件演示:

go run filedemo/leopard_file_demo.go -access_key "${ACCESS_KEY}" -input_audio_path "${AUDIO_FILE_PATH}"

${ACCESS_KEY}替换为您从Picovoice Console获得的密钥,将${AUDIO_FILE_PATH}替换为您想要转录的音频文件路径。

有关Go演示的更多信息,请查看demo/go

React Native演示

要运行React Native Leopard演示应用,您首先需要设置React Native环境。为此,请参考React Native的文档。环境设置完成后,导航到demo/react-native运行以下命令:

对于Android:

yarn android-install    # 设置环境
yarn android-run        # 构建并部署到Android

对于iOS:

yarn ios-install        # 设置环境
yarn ios-run

Java演示

Leopard Java演示是一个命令行应用程序,让您可以选择在音频文件或麦克风输入上运行Leopard。

demo/java在终端中运行以下命令来构建和运行文件演示:

cd demo/java
./gradlew build
cd build/libs
java -jar leopard-file-demo.jar -a ${ACCESS_KEY} -i ${AUDIO_FILE_PATH}

${ACCESS_KEY} 替换为您从 Picovoice Console 获得的密钥,将 ${AUDIO_FILE_PATH} 替换为您想要转录的音频文件路径。

有关 Java 演示的更多信息,请访问 demo/java

.NET 演示

Leopard .NET 演示 是一个命令行应用程序,让您可以选择在音频文件上或实时麦克风输入上运行 Leopard。

demo/dotnet/LeopardDemo 中,在终端运行以下命令:

dotnet run -c FileDemo.Release -- --access_key ${ACCESS_KEY} --input_audio_path ${AUDIO_FILE_PATH}

${ACCESS_KEY} 替换为您从 Picovoice Console 获得的密钥,将 ${AUDIO_FILE_PATH} 替换为您想要转录的音频文件路径。

有关 .NET 演示的更多信息,请访问 demo/dotnet

Rust 演示

Leopard Rust 演示 是一个命令行应用程序,让您可以选择在音频文件上或实时麦克风输入上运行 Leopard。

demo/rust/filedemo 中,在终端运行以下命令:

cargo run --release -- --access_key ${ACCESS_KEY} --input_audio_path ${AUDIO_FILE_PATH}

${ACCESS_KEY} 替换为您从 Picovoice Console 获得的密钥,将 ${AUDIO_FILE_PATH} 替换为您想要转录的音频文件路径。

有关 Rust 演示的更多信息,请访问 demo/rust

Web 演示

原生 JavaScript 和 HTML

demo/web 中,在终端运行以下命令:

yarn
yarn start

(或)

npm install
npm run start

在浏览器中打开 http://localhost:5000 来尝试演示。

React 演示

demo/react 中,在终端运行以下命令:

yarn
yarn start ${LANGUAGE}

(或)

npm install
npm run start ${LANGUAGE}

在浏览器中打开 http://localhost:3000 来尝试演示。

SDK

Python

安装 Python SDK:

pip3 install pvleopard

创建引擎实例并转录音频文件:

import pvleopard

leopard = pvleopard.create(access_key='${ACCESS_KEY}')

print(leopard.process_file('${AUDIO_FILE_PATH}'))

${ACCESS_KEY} 替换为您从 Picovoice Console 获得的密钥,将 ${AUDIO_FILE_PATH} 替换为音频文件的路径。最后,完成后请务必使用 leopard.delete() 显式释放资源。

C

创建引擎实例并转录音频文件:

#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>

#include "pv_leopard.h"

pv_leopard_t *leopard = NULL;
bool enable_automatic_punctuation = false;
bool enable_speaker_diarization = false;

pv_status_t status = pv_leopard_init(
  "${ACCESS_KEY}",
  "${MODEL_FILE_PATH}",
  enable_automatic_punctuation,
  enable_speaker_diarization,
  &leopard);
if (status != PV_STATUS_SUCCESS) {
    // 错误处理逻辑
}

char *transcript = NULL;
int32_t num_words = 0;
pv_word_t *words = NULL;
status = pv_leopard_process_file(
    leopard,
    "${AUDIO_FILE_PATH}",
    &transcript,
    &num_words,
    &words);
if (status != PV_STATUS_SUCCESS) {
    // 错误处理逻辑
}

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 .speaker_tag = %d\n",
            words[i].word,
            words[i].start_sec,
            words[i].end_sec,
            words[i].confidence,
            words[i].speaker_tag);
}

pv_leopard_transcript_delete(transcript);
pv_leopard_words_delete(words);

${ACCESS_KEY} 替换为您从 Picovoice Console 获得的密钥,将 ${MODEL_FILE_PATH} 替换为 默认模型文件(或您的自定义文件)的路径,将 ${AUDIO_FILE_PATH} 替换为音频文件的路径。最后,完成后请务必使用 pv_leopard_delete(leopard) 释放获取的资源。

iOS

Leopard iOS 绑定可通过 CocoaPods 获得。要将其导入到您的 iOS 项目中,请在 Podfile 中添加以下行,然后运行 pod install

pod 'Leopard-iOS'

创建引擎实例并转录音频文件:

import Leopard

let modelPath = Bundle(for: type(of: self)).path(
        forResource: "${MODEL_FILE}", // 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 Console 获得的密钥,${MODEL_FILE} 替换为从 console 获得的自定义训练模型或 [默认模型](https://github.com/Picovoice/leopard/blob/master/./lib/common/leopard_params.pv,`${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}"; // 从 Picovoice Console (https://console.picovoice.ai/) 获得的 AccessKey
final String modelPath = "${MODEL_FILE_PATH}";
try {
    Leopard leopard = new Leopard.Builder()
        .setAccessKey(accessKey)
        .setModelPath(modelPath)
        .build(appContext);

    File audioFile = new File("${AUDIO_FILE_PATH}");
    LeopardTranscript transcript = leopard.processFile(audioFile.getAbsolutePath());

} catch (LeopardException ex) { }

${ACCESS_KEY} 替换为您从 Picovoice Console 获得的密钥,${MODEL_FILE_PATH} 替换为从 console 获得的自定义训练模型或 [默认模型](https://github.com/Picovoice/leopard/blob/master/./lib/common/leopard_params.pv,`${AUDIO_FILE_PATH}` 替换为音频文件的路径。

Node.js

安装 Node.js SDK:

yarn add @picovoice/leopard-node

创建 Leopard 类的实例:

const Leopard = require("@picovoice/leopard-node");
const accessKey = "${ACCESS_KEY}" // 从 Picovoice Console (https://console.picovoice.ai/) 获得
let leopard = new Leopard(accessKey);

const result = engineInstance.processFile('${AUDIO_FILE_PATH}');
console.log(result.transcript);

${ACCESS_KEY} 替换为您从 Picovoice Console 获得的密钥,将 ${AUDIO_FILE_PATH} 替换为音频文件的路径。

完成后,请务必使用 release() 释放资源:

leopard.release();

Flutter

在 pub.yaml 中添加 Leopard Flutter 插件

dependencies:
  leopard_flutter: ^<version>

创建引擎实例并转录音频文件:

import 'package:leopard/leopard.dart';

final String accessKey = '{ACCESS_KEY}'  // 从 Picovoice Console (https://console.picovoice.ai/) 获得的 AccessKey

try {
    Leopard _leopard = await Leopard.create(accessKey, '{MODEL_FILE_PATH}');
    LeopardTranscript result = await _leopard.processFile("${AUDIO_FILE_PATH}");
    print(result.transcript);
} on LeopardException catch (err) { }

${ACCESS_KEY} 替换为您从 Picovoice Console 获得的 AccessKey${MODEL_FILE_PATH} 替换为从 Picovoice Console 获得的自定义训练模型或 [默认模型](https://github.com/Picovoice/leopard/blob/master/./lib/common/leopard_params.pv,`${AUDIO_FILE_PATH}` 替换为音频文件的路径。

Go

安装 Go 绑定:

go get github.com/Picovoice/leopard/binding/go/v2

创建引擎实例并转录音频文件:

import . "github.com/Picovoice/leopard/binding/go/v2"

leopard = Leopard{AccessKey: "${ACCESS_KEY}"}
err := leopard.Init()
if err != nil {
    // 处理初始化错误
}
defer leopard.Delete()

transcript, words, err := leopard.ProcessFile("${AUDIO_FILE_PATH}")
if err != nil {
    // 处理处理错误
}

log.Println(transcript)

${ACCESS_KEY} 替换为您从 Picovoice Console 获得的密钥,将 ${AUDIO_FILE_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 = () => {
  // 获取音频帧
}

try {
  const leopard = await Leopard.create("${ACCESS_KEY}", "${MODEL_FILE_PATH}")
  const { transcript, words } = await leopard.processFile("${AUDIO_FILE_PATH}")
  console.log(transcript)
} catch (err: any) {
  if (err instanceof LeopardErrors) {
    // 处理错误
  }
}

${ACCESS_KEY} 替换为您从 Picovoice Console 获得的 AccessKey${MODEL_FILE_PATH} 替换为从 Picovoice Console 获得的自定义训练模型或 [默认模型](https://github.com/Picovoice/leopard/blob/master/./lib/common/leopard_params.pv,`${AUDIO_FILE_PATH}` 替换为音频文件的绝对路径。 完成后,请务必使用 leopard.delete() 显式释放资源。

Java

最新的 Java 绑定可从 Maven Central Repository 获得:

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_FILE_PATH}");
    leopard.delete();
} catch (LeopardException ex) { }

System.out.println(result.getTranscriptString());

${ACCESS_KEY} 替换为您从 Picovoice Console 获得的密钥,将 ${AUDIO_FILE_PATH} 替换为音频文件的路径。最后,完成后请务必使用 leopard.delete() 显式释放资源。

.NET

使用 NuGet 或 dotnet CLI 安装 .NET SDK:

dotnet add package Leopard

创建引擎实例并转录音频文件:

using Pv;

const string accessKey = "${ACCESS_KEY}";
const string audioPath = "${AUDIO_FILE_PATH}";

Leopard leopard = Leopard.Create(accessKey);

Console.Write(leopard.ProcessFile(audioPath));

${ACCESS_KEY} 替换为您从 Picovoice Console 获得的密钥。最后,完成后使用 leopard.Dispose() 释放资源。

Rust

首先,您需要在系统上安装 Rust 和 Cargo

要将 leopard 库添加到您的应用程序中,请在应用程序的 Cargo.toml 清单中添加 pv_leopard

[dependencies]
pv_leopard = "*"

使用 LeopardBuilder 实例创建引擎实例并转录音频文件:

use leopard::LeopardBuilder;

fn main() {
    let access_key = "${ACCESS_KEY}"; // 从 Picovoice Console (https://console.picovoice.ai/) 获得的 AccessKey
    let leopard: Leopard = LeopardBuilder::new().access_key(access_key).init().expect("无法创建 Leopard");

    if let Ok(leopard_transcript) = leopard.process_file("/absolute/path/to/audio_file") {
        println!("{}", leopard_transcript.transcript);
    }
}

${ACCESS_KEY} 替换为您从 Picovoice Console 获得的密钥。

Web

原生 JavaScript 和 HTML(ES 模块)

使用 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 {
  // ... 获取音频数据的函数
  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 Console 获得的密钥。最后,完成后使用 leopard.release() 释放资源。

React

yarn add @picovoice/leopard-react @picovoice/web-voice-processor

(或)

npm install @picovoice/leopard-react @picovoice/web-voice-processor
import { useLeopard } from "@picovoice/leopard-react";

function App(props) {
  const {
    result,
    isLoaded,
    error,
    init,
    processFile,
    startRecording,
    stopRecording,
    isRecording,
    recordingElapsedSec,
    release,
  } = useLeopard();

  const initEngine = async () => {
    await init(
      "${ACCESS_KEY}",
      leopardModel,
    );
  };

  const handleFileUpload = async (audioFile: File) => {
    await processFile(audioFile);
  }

  const toggleRecord = async () => {
    if (isRecording) {
      await stopRecording();
    } else {
      await startRecording();
    }
  };

  useEffect(() => {
    if (result !== null) {
      console.log(result.transcript);
      console.log(result.words);
    }
  }, [result])
}

发布

v2.0.0 - 2023年11月30日

  • 添加说话人分离功能
  • 添加 React SDK
  • 改进错误报告
  • 升级授权和身份验证系统
  • 提高引擎精度
  • 各种错误修复和改进
  • Node 最低支持版本提升至 Node 16
  • iOS 支持提升至 iOS 13+
  • 修复 .NET 支持

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日

  • 初始发布
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号