由加拿大温哥华的 Picovoice 制作
Cheetah 是一个设备上的流式语音转文本引擎。Cheetah 具有以下特点:
访问密钥是用于部署 Picovoice SDK(包括 Cheetah)的身份验证和授权令牌。任何使用 Picovoice 的人都需要有一个有效的访问密钥。您必须保密您的访问密钥。即使语音识别是 100% 离线运行的,您也需要互联网连接来验证您的访问密钥与 Picovoice 许可服务器。
访问密钥还验证您的使用是否在您账户的限制范围内。每个注册 Picovoice 控制台 的人都会收到 这里 描述的"免费层"使用权限。如果您希望增加限制,可以购买订阅计划。
安装演示包:
pip3 install pvcheetahdemo
cheetah_demo_mic --access_key ${ACCESS_KEY}
将 ${ACCESS_KEY}
替换为您从 Picovoice 控制台获得的访问密钥。
如果使用 SSH,请使用以下命令克隆仓库:
git clone --recurse-submodules git@github.com:Picovoice/cheetah.git
如果使用 HTTPS,请使用以下命令克隆仓库:
git clone --recurse-submodules https://github.com/Picovoice/cheetah.git
构建演示:
cmake -S demo/c/ -B demo/c/build && cmake --build demo/c/build
运行演示:
./demo/c/build/cheetah_demo_mic -a ${ACCESS_KEY} -m ${MODEL_PATH} -l ${LIBRARY_PATH}
将 ${ACCESS_KEY}
替换为从 Picovoice Console 获取的密钥,${LIBRARY_PATH}
替换为 lib 下适当的库路径,${MODEL_PATH}
替换为默认模型文件的路径(或您的自定义模型)。
要运行演示,转到 demo/ios/CheetahDemo 并运行:
pod install
在 ViewModel.swift 文件中,将 let accessKey = "${YOUR_ACCESS_KEY_HERE}"
替换为您的 AccessKey
。
然后,使用 Xcode,打开生成的 CheetahDemo.xcworkspace
并运行应用程序。
使用 Android Studio,将 demo/android/CheetahDemo 作为 Android 项目打开,然后运行应用程序。
在 MainActivity.java 文件中,将 "${YOUR_ACCESS_KEY_HERE}"
替换为您的 AccessKey
。
要在 Android 或 iOS 上使用 Flutter 运行 Cheetah 演示,您必须在系统上安装 Flutter SDK。安装完成后,可以运行 flutter doctor
来确定相关平台的任何其他缺失要求。设置好环境后,启动模拟器或连接 Android/iOS 设备。
在启动应用程序之前,使用 copy_assets.sh 脚本将 Cheetah 演示模型文件复制到演示项目中。(注意:在 Windows 上,需要 Git Bash 或其他 bash shell,否则您必须手动将上下文复制到项目中。)
在 main.dart 文件中,将 "${YOUR_ACCESS_KEY_HERE}"
替换为您的 AccessKey
。
从 demo/flutter 运行以下命令,以构建和部署演示到您的设备:
flutter run
该演示需要 cgo
,在 Windows 上可能意味着您需要安装 gcc 编译器(如 MinGW)才能正确构建。
从 demo/go 在终端运行以下命令以构建和运行文件演示:
go run micdemo/cheetah_mic_demo.go -access_key "${ACCESS_KEY}"
将 ${ACCESS_KEY}
替换为从 Picovoice Console 获取的密钥。
有关 Go 演示的更 多信息,请转到 demo/go。
要运行 React Native Cheetah 演示应用程序,您首先需要设置 React Native 环境。为此,请参阅 React Native 文档。环境设置完成后,导航到 demo/react-native 运行以下命令:
对于 Android:
yarn android-install # 设置环境 yarn android-run # 构建并部署到 Android
对于 iOS:
yarn ios-install # 设置环境 yarn ios-run
安装演示包:
yarn global add @picovoice/cheetah-node-demo
将工作麦克风连接到您的设备后,在终端中运行以下命令:
cheetah-mic-demo --access_key ${ACCESS_KEY}
有关 Node.js 演示的更多信息,请转到 demo/nodejs。
Cheetah Java 演示是一个命令行应用程序,让您可以选择在音频文件或实时麦克风输入上运行 Cheetah。
要尝试实时演示,请确保有一个工作的麦克风连接到您的设备。然后从终端调用以下命令:
cd demo/java ./gradlew build cd build/libs java -jar cheetah-mic-demo.jar -a ${ACCESS_KEY}
有关 Java 演示的更多信息,请转到 demo/java。
Cheetah .NET 演示是一个命令行应用程序,让您可以选择在音频文件或实时麦克风输入上运行 Cheetah。
确保有一个工作的麦克风连接到您的设备。从 demo/dotnet/CheetahDemo 在终端中运行以下命令:
dotnet run -c MicDemo.Release -- --access_key ${ACCESS_KEY}
将 ${ACCESS_KEY}
替换为您的 Picovoice AccessKey
。
有关 .NET 演示的更多信息,请转到 demo/dotnet。
Cheetah Rust 演示是一个命令行应用程序,让您可以选择在音频文件或实时麦克风输入上运行 Cheetah。
确保有一个工作的麦克风连接到您的设备。从 demo/rust/micdemo 在终端中运行以下命令:
cargo run --release -- --access_key ${ACCESS_KEY}
将 ${ACCESS_KEY}
替换为您的 Picovoice AccessKey
。
有关 Rust 演示的更多信息,请转到 demo/rust。
从 demo/web 在终端中运行以下命令:
yarn yarn start
(或)
npm install npm run start
在浏览器中打开 http://localhost:5000
来尝试演示。
从 demo/react 在终端中运行以下命令:
yarn yarn start
(或)
npm install npm run start
在浏览器中打开 http://localhost:3000
来尝试演示。
安装 Python SDK:
pip3 install pvcheetah
创建引擎实例并实时转录音频:
import pvcheetah handle = pvcheetah.create(access_key='${ACCESS_KEY}') def get_next_audio_frame(): pass while True: partial_transcript, is_endpoint = handle.process(get_next_audio_frame()) if is_endpoint: final_transcript = handle.flush()
将 ${ACCESS_KEY}
替换为从 Picovoice Console 获取的密钥。
创建引擎实例并实时转录音频:
#include <stdbool.h> #include <stdio.h> #include <stdlib.h> #include "pv_cheetah.h" pv_cheetah_t *handle = NULL; const pv_status_t status = pv_cheetah_init("${ACCESS_KEY}", "${MODEL_PATH}", 0.f, false, &handle); if (status != PV_STATUS_SUCCESS) { // 错误处理逻辑 } extern const int16_t *get_next_audio_frame(void); while (true) { char *partial_transcript = NULL; bool is_endpoint = false; const pv_status_t status = pv_cheetah_process( handle, get_next_audio_frame(), &partial_transcript, &is_endpoint); if (status != PV_STATUS_SUCCESS) { // 错误处理逻辑 } // 处理转录结果 free(partial_transcript); if (is_endpoint) { char *final_transcript = NULL; const pv_status_t status = pv_cheetah_flush(handle, &final_transcript); if (status != PV_STATUS_SUCCESS) { // 错误处理逻辑 } // 处理最终转录结果 free(final_transcript); } }
将 ${ACCESS_KEY}
替换为从 Picovoice Console 获得的密钥,将 ${MODEL_PATH}
替换为默认模型文件的路径(或您的自定义模型)。最后,完成后请务必使用 pv_cheetah_delete(handle)
释放获取的资源。
Cheetah iOS 绑定可通过 CocoaPods 获得。要将其导入到您的 iOS 项目中,请在 Podfile 中添加以下行并运行 pod install
:
pod 'Cheetah-iOS'
创建引擎实例并实时转录音频:
import Cheetah let modelPath = Bundle(for: type(of: self)).path( forResource: "${MODEL_FILE}", // Cheetah 模型文件名 ofType: "pv")! let cheetah = Cheetah(accessKey: "${ACCESS_KEY}", modelPath: modelPath) func getNextAudioFrame() -> [Int16] { // .. 获取音频帧 return audioFrame; } while true { do { let partialTranscript, isEndpoint = try cheetah.process(getNetAudioFrame()) if isEndpoint { let finalTranscript = try cheetah.flush() } } catch let error as CheetahError { // 处理错误 } catch { } }
将 ${ACCESS_KEY}
替换为从 Picovoice Console 获得的密钥,将 ${MODEL_FILE}
替换为从 Picovoice Console 获得的自定义训练模型或默认模型。
要在 Android 项目中包含该包,请确保在顶级 build.gradle
文件中包含了 mavenCentral()
,然后在应用的 build.gradle
中添加以下内容:
dependencies { implementation 'ai.picovoice:cheetah-android:${LATEST_VERSION}' }
创建引擎实例并实 时转录音频:
import ai.picovoice.cheetah.*; final String accessKey = "${ACCESS_KEY}"; // 从 Picovoice Console 获得的 AccessKey (https://console.picovoice.ai/) final String modelPath = "${MODEL_FILE}"; short[] getNextAudioFrame() { // .. 获取音频帧 return audioFrame; } try { Cheetah cheetah = new Cheetah.Builder().setAccessKey(accessKey).setModelPath(modelPath).build(appContext); String transcript = ""; while true { CheetahTranscript transcriptObj = cheetah.process(getNextAudioFrame()); transcript += transcriptObj.getTranscript(); if (transcriptObj.getIsEndpoint()) { CheetahTranscript finalTranscriptObj = cheetah.flush(); transcript += finalTranscriptObj.getTranscript(); } }; } catch (CheetahException ex) { }
将 ${ACCESS_KEY}
替换为从 Picovoice Console 获得的密钥,将 ${MODEL_FILE}
替换为从 console 获得的默认或自定义训练模型。
在 pub.yaml 中添加 Cheetah Flutter 插件。
dependencies: cheetah_flutter: ^<版本>
创建引擎实例并实时转录音频:
import 'package:cheetah_flutter/cheetah.dart'; const accessKey = "{ACCESS_KEY}" // 从 Picovoice Console 获得的 AccessKey (https://console.picovoice.ai/) List<int> buffer = getAudioFrame(); try{ Cheetah _cheetah = await Cheetah.create(accessKey, '{CHEETAH_MODEL_PATH}'); String transcript = ""; while true { CheetahTranscript partialResult = await _cheetah.process(getAudioFrame()); transcript += partialResult.transcript; if (partialResult.isEndpoint) { CheetahTranscript finalResult = await _cheetah.flush(); transcript += finalResult.transcript; } } _cheetah.delete() } on CheetahException catch (err) { }
将 ${ACCESS_KEY}
替换为从 Picovoice Console 获得的 AccessKey
,将 ${CHEETAH_MODEL_PATH}
替换为从 Picovoice Console 获得的自定义训练模型路径或默认模型路径。
安装 Go 绑定:
go get github.com/Picovoice/cheetah/binding/go
创建引擎实例并实时转录音频:
import . "github.com/Picovoice/cheetah/binding/go" cheetah = NewCheetah{AccessKey: "${ACCESS_KEY}"} err := cheetah.Init() if err != nil { // 处理初始化错误 } defer cheetah.Delete() func getNextFrameAudio() []int16{ // 获取音频帧 } for { partialTranscript, isEndpoint, err = cheetah.Process(getNextFrameAudio()) if isEndpoint { finalTranscript, err = cheetah.Flush() } }
将 ${ACCESS_KEY}
替换为从 Picovoice Console 获得的密钥。完成后,请务必使用 cheetah.Delete()
显式释放资源。
Cheetah React Native 绑定可通过 NPM 获得。使用以下命令添加:
yarn add @picovoice/cheetah-react-native
创建引擎实例并转录音频文件:
import {Cheetah, CheetahErrors} from '@picovoice/cheetah-react-native'; const getAudioFrame = () => { // 获取音频帧 } try { while (1) { const cheetah = await Cheetah.create("${ACCESS_KEY}", "${MODEL_FILE}") const {transcript, isEndpoint} = await cheetah.process(getAudioFrame()) if (isEndpoint) { const {transcript} = await cheetah.flush() } } } catch (err: any) { if (err instanceof CheetahErrors) { // 处理错误 } }
将 ${ACCESS_KEY}
替换为从 Picovoice Console 获得的密钥,将 ${MODEL_FILE}
替换为从 console 获得的默认或自定义训练模型。完成后,请务必使用 cheetah.delete()
显式释放资源。
安装 Node.js SDK:
yarn add @picovoice/cheetah-node
创建 Cheetah 类的实例:
const Cheetah = require("@picovoice/cheetah-node"); const accessKey = "${ACCESS_KEY}"; // 从 Picovoice Console 获得 (https://console.picovoice.ai/) const endpointDurationSec = 0.2; const handle = new Cheetah(accessKey); function getNextAudioFrame() { // ... return audioFrame; } while (true) { const audioFrame = getNextAudioFrame(); const [partialTranscript, isEndpoint] = handle.process(audioFrame); if (isEndpoint) { finalTranscript = handle.flush() } }
将 ${ACCESS_KEY}
替换为从 Picovoice Console 获得的密钥。
完成后,请务必使用 release()
释放资源:
handle.release();
使用 Cheetah Builder 类创建引擎实例并实时转录音频:
import ai.picovoice.cheetah.*; final String accessKey = "..."; // Picovoice控制台提供的AccessKey (https://console.picovoice.ai/) short[] getNextAudioFrame() { // .. 获取音频帧 return audioFrame; } String transcript = ""; try { Cheetah cheetah = new Cheetah.Builder().setAccessKey(accessKey).build(); while (true) { CheetahTranscript transcriptObj = cheetah.process(getNextAudioFrame()); transcript += transcriptObj.getTranscript(); if (transcriptObj.getIsEndpoint()) { CheetahTranscript finalTranscriptObj = cheetah.flush(); transcript += finalTranscriptObj.getTranscript(); } } cheetah.delete(); } catch (CheetahException ex) { }
使用NuGet或dotnet CLI安装.NET SDK:
dotnet add package Cheetah
SDK提供了一个工厂方法来创建引擎实例,如下所示:
using Pv; const string accessKey = "${ACCESS_KEY}"; Cheetah handle = Cheetah.Create(accessKey);
将${ACCESS_KEY}替换为从Picovoice控制台(https://console.picovoice.ai/)获得的密钥。
初始化后,有效的采样率由handle.SampleRate给出。预期的帧长度(输入数组中的音频样本数)是handle.FrameLength。引擎接受16位线性PCM编码,并对单通道音频进行操作。
short[] GetNextAudioFrame() { // .. 获取音频帧 return audioFrame; } string transcript = ""; while(true) { CheetahTranscript transcriptObj = handle.Process(GetNextAudioFrame()); transcript += transcriptObj.Transcript; if (transcriptObj.IsEndpoint) { CheetahTranscript finalTranscriptObj = handle.Flush(); transcript += finalTranscriptObj.Transcript; } }
Cheetah的资源将由垃圾收集器释放,但要在使用后立即释放资源,可以将其包装在using语句中:
using(Cheetah handle = Cheetah.Create(accessKey)) { // .. 这里使用Cheetah }
首先需要在系统上安装Rust和Cargo。
要将cheetah库添加到您的应用程序中,请在应用程序的Cargo.toml清单中添加pv_cheetah:
[dependencies] pv_cheetah = "*"
使用CheetahBuilder实例创建引擎实例并转录音频文件:
use cheetah::CheetahBuilder; fn next_audio_frame() -> Vec<i16> { // 获取音频帧 } let access_key = "${ACCESS_KEY}"; // 从Picovoice控制台获得的AccessKey (https://console.picovoice.ai/) let cheetah: Cheetah = CheetahBuilder::new().access_key(access_key).init().expect("无法创建Cheetah"); if let Ok(cheetahTranscript) = cheetah.process(&next_audio_frame()) { println!("{}", cheetahTranscript.transcript) if cheetahTranscript.is_endpoint { if let Ok(cheetahTranscript) = cheetah.flush() { println!("{}", cheetahTranscript.transcript) } } }
将${ACCESS_KEY}替换为从Picovoice控制台(https://console.picovoice.ai/)获得的密钥。
使用yarn安装web SDK:
yarn add @picovoice/cheetah-web
或使用npm:
npm install --save @picovoice/cheetah-web
使用CheetahWorker创建引擎实例并转录音频文件:
import { CheetahWorker } from "@picovoice/cheetah-web"; import cheetahParams from "${PATH_TO_BASE64_CHEETAH_PARAMS}"; let transcript = ""; function transcriptCallback(cheetahTranscript: CheetahTranscript) { transcript += cheetahTranscript.transcript; if (cheetahTranscript.isEndpoint) { transcript += "\n"; } } function getAudioData(): Int16Array { // ... 获取音频数据的函数 return new Int16Array(); } const cheetah = await CheetahWorker.create( "${ACCESS_KEY}", transcriptCallback, { base64: cheetahParams } ); for (;;) { cheetah.process(getAudioData()); // 在某些条件下中断 } cheetah.flush(); // 对剩余数据运行transcriptionCallback。
将${ACCESS_KEY}替换为从Picovoice控制台(https://console.picovoice.ai/)获得的密钥。最后,完成后使用cheetah.release()释放资源。
yarn add @picovoice/cheetah-react @picovoice/web-voice-processor
(或)
npm install @picovoice/cheetah-react @picovoice/web-voice-processor
import { useCheetah } from "@picovoice/cheetah-react"; function App(props) { const { result, isLoaded, isListening, error, init, start, stop, release, } = useCheetah(); const initEngine = async () => { await init( "${ACCESS_KEY}", cheetahModel, ); }; const toggleRecord = async () => { if (isListening) { await stop(); } else { await start(); } }; useEffect(() => { if (result !== null) { console.log(result.transcript); console.log(result.isComplete); } }, [result]) }
AI小说写作助手,一站式润色、改写、扩写
蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。
字节跳动发布的AI编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
全能AI智能助手,随时解答生活与工作的多样问题
问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。
实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多 样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作 出高品质 PPT,满足不同场景演示需求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号