Cobra-iOS 2.0.1

Cobra-iOS 2.0.1

Kwangsoo YeoIan LaveryMohammadreza Rostam 维护。



Cobra-iOS 2.0.1

  • Picovoice

Cobra

GitHub

PyPI Maven Central

Crates.io

Picovoice 在加拿大温哥华制作

Twitter URL

YouTube Channel Views

Cobra 是一款高度精确和轻量级的语音活动检测(VAD)引擎。

目录

演示

Python 演示

安装演示包

sudo pip3 install pvcobrademo

将功能正常的麦克风连接到您的设备,然后在终端中运行以下命令

cobra_demo_mic --access_key ${AccessKey}

${AccessKey} 替换为您从 Picovoice 控制台 获得的 AccessKey。当检测到任何语音活动时,Cobra 会实时处理麦克风输入的音频并将其输出到终端。

有关 Python 演示的更多信息,请访问 demo/python

C 演示

构建演示

cmake -S demo/c/ -B demo/c/build && cmake --build demo/c/build --target cobra_demo_mic

列出可用的音频输入设备

./demo/c/build/cobra_demo_mic -s

运行演示

./demo/c/build/cobra_demo_mic -l ${LIBRARY_PATH} -a ${ACCESS_KEY} -d ${AUDIO_DEVICE_INDEX}

${LIBRARY_PATH} 替换为位于 lib 下的适当库的路径,将 ${ACCESS_KEY} 替换为从 Picovoice 控制台 获得的 AccessKey,以及将 ${INPUT_AUDIO_DEVICE} 替换为您的麦克风设备的索引。

有关 C 演示的更多信息,请访问 demo/c

Android 演示

使用 Android Studio,将 demo/android/Activity 打开为 Android 项目,然后运行应用程序。将 MainActivity.java 中的 String ACCESS_KEY = "..." 替换为通过 Picovoice 控制台 生成的 AccessKey。

有关 Android 演示的更多信息,请访问 demo/android

iOS 演示

从这个目录运行以下命令以安装 Cobra-iOS CocoaPod

pod install

ViewModel.swift 中的 let ACCESS_KEY = "..." 替换为您从 Picovoice 控制台 获得的。

然后,使用 Xcode,打开生成的 CobraDemo.xcworkspace 并运行应用程序。按下开始按钮并开始说话,背景色会在您说话时改变。

有关 iOS 演示的更多信息,请访问 demo/ios

Web 演示

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

yarn
yarn start

(或)

npm install
npm run start

在您的浏览器中打开 https://:5000 以尝试演示。

Rust 演示

demo/rust/micdemo 构建并运行演示

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

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

SDKs

Python

安装 Python SDK

pip3 install pvcobra

SDK 提供了一个工厂方法来创建引擎实例

import pvcobra

handle = pvcobra.create(access_key=${AccessKey})

其中 ${AccessKey} 是应从 Picovoice 控制台 获得的 AccessKey。初始化时,可以使用 handle.sample_rate 获取有效的采样率。所需的帧长度(输入数组中的音频样本数)是 handle.frame_length。该对象可以用来监控传入的音频,如下所示

def get_next_audio_frame():
    pass

while True:
    voice_probability = handle.process(get_next_audio_frame())

最后,完成时务必显式使用 handle.delete() 释放资源。

C

include/pv_cobra.h 头文件包含相关信息。构建对象的实例

    pv_cobra_t *handle = NULL;
    pv_status_t status = pv_cobra_init(${ACCESS_KEY}, &handle);
    if (status != PV_STATUS_SUCCESS) {
        // error handling logic
    }

用从 Picovoice 控制台获得的 AccessKey 替换 ${ACCESS_KEY}。现在可以使用 handle 来监控输入音频流。Cobra 接受单通道、16 位线性编码的 PCM 音频。样本率可以使用 pv_sample_rate() 获取。最后,Cobra 接受连续的数据块(也称为帧)作为输入音频,可以使用 pv_cobra_frame_length() 获取每个帧的长度。

extern const int16_t *get_next_audio_frame(void);

while (true) {
    const int16_t *pcm = get_next_audio_frame();
    float is_voiced = 0.f;
    const pv_status_t status = pv_cobra_process(handle, pcm, &is_voiced);
    if (status != PV_STATUS_SUCCESS) {
        // error handling logic
    }
}

最后,完成后请务必释放所获取的资源

pv_cobra_delete(handle);

Android

创建引擎实例

import ai.picovoice.cobra.Cobra;
import ai.picovoice.cobra.CobraException;

String accessKey = // .. AccessKey provided by Picovoice Console (https://console.picovoice.ai/)
try {
    handle = new Cobra(accessKey);
} catch (CobraException e) {
    // handle error
}

初始化后,可以使用 handle.getSampleRate() 获取有效样本率。所需帧长度(输入数组中的音频样本数)是 handle.getFrameLength()。可以使用该对象如下监控输入音频

short[] getNextAudioFrame(){

while(true) {
    try {
        final float voiceProbability = handle.process(getNextAudioFrame());
    } catch (CobraException e) { }
}

最后,完成时务必显式使用 handle.delete() 释放资源。

iOS

要将 Cobra iOS 绑定导入到您的项目中,请将以下行添加到您的 Podfile 中,然后运行 pod install

pod 'Cobra-iOS'

创建引擎实例

import Cobra

let accessKey : String = // .. AccessKey provided by Picovoice Console (https://console.picovoice.ai/)
do {
    handle = try Cobra(accessKey: accessKey)
} catch { }

func getNextAudioFrame() -> [Int16] {
    // .. get audioFrame
    return audioFrame;
}

while true {
    do {
        let voiceProbability = try handle.process(getNextAudioFrame())
    } catch { }
}

最后,完成时务必显式使用 handle.delete() 释放资源。

Web

使用 yarn 安装 Web SDK

yarn add @picovoice/cobra-web

或使用 npm

npm install --save @picovoice/cobra-web

使用 CobraWorker 创建引擎实例,并在音频输入流上运行 VAD

import { CobraWorker } from "@picovoice/cobra-web";

function voiceProbabilityCallback(voiceProbability: number) {
  ... // use voice probability figure
}

function getAudioData(): Int16Array {
  ... // function to get audio data
  return new Int16Array();
}

const cobra = await CobraWorker.create(
  "${ACCESS_KEY}",
  voiceProbabilityCallback
);

for (; ;) {
  cobra.process(getAudioData());
  // break on some condition
}

用从 Picovoice 控制台 获得的 AccessKey 替换 ${ACCESS_KEY}

完成后,使用 cobra.release() 释放为 Cobra 分配的资源。

Rust

创建引擎实例并检测语音活动

use cobra::Cobra;

let cobra = Cobra::new("${ACCESS_KEY}");

fn next_audio_frame() -> Vec<i16> {
    // get audio frame
}

loop {
    if let Ok(voice_probability) = cobra.process(&next_audio_frame()) {
      // ...
    }
}

版本

1.2.0 2023 年 1 月 27 日

  • 更新 Cobra 引擎以提高精度和性能
  • 最低 iOS 要求提升到 iOS 11.0
  • 修复了一些小故障

1.1.0 2022 年 1 月 21 日

  • 改善了 Web 绑定的类型
  • 各种错误修复和改进

1.0.0 2021 年 10 月 8 日

  • (initial release)