Picovoice/rhino

On-device Speech-to-Intent engine powered by deep learning

Rhino 는 무엇인가요?

Rhino 는 Picovoice 의 음성에서 의도로 변환하는 엔진입니다. 마이크(또는 오디오 파일)를 듣고, 소형 신경망을 디바이스 내에서 실행한 후, 사용자가 무엇을 하고 싶어 하는지(의도)를 구조화된 형태로 직접 반환합니다. 또한 추출된 변수(슬롯)도 포함합니다. 예를 들어 다음을 말하면:

*"작은 두 번샷 에스프레소 한 잔 주세요."

다음과 같은 결과가 나옵니다:

{
  "isUnderstood": true,
  "intent": "orderBeverage",
  "slots": {
    "beverage": "espresso",
    "size": "small",
    "numberOfShots": "2"
  }
}

왜 중요한가요?

  • 디바이스 내 처리, 낮은 지연 – 클라우드로의 왕복이 필요 없어 오프라인에서도 작동하며, 개인정보를 보호합니다.
  • 매우 작고 가벼운 크기 – 마이크로컨트롤러(Cortex-M), 라즈베리파이, 스마트폰, 브라우저, 데스크톱 OS 등 다양한 플랫폼에 최적화되어 있습니다.
  • 사용자 정의 가능 – 개발자는 Picovoice Console 을 사용해 자신만의 컨텍스트(명령어 집합)를 만들 수 있습니다.
  • 크로스플랫폼 SDK – Python, .NET, Java, Flutter, React Native, Android, iOS, Web(JS), Node.js, 그리고 순수 C용으로 바로 사용 가능한 라이브러리가 제공됩니다.

어떻게 작동하나요?

  1. 컨텍스트 정의 – 사용자가 말할 수 있는 표현(예: "$location의 조명을 끄세요")을 의도와 연결하고, 필요에 따라 일부를 슬롯(변수)로 표시하는 YAML 파일을 작성합니다. 예시:
    turnLightOff:
      - $location의 조명을 끄세요.
    
  2. 모델 학습 – Picovoice 의 클라우드 서비스가 컨텍스트를 바이너리(*.rhn)로 컴파일하여, 해당 도메인에 최적화된 소형 신경망을 내장합니다.
  3. 추론 실행 – SDK 가 바이너리를 로드하고, 16비트 PCM 오디오를 프레임 단위로 처리합니다. 발화가 완료되면 Inference 객체를 반환하며, 이 객체에는 is_understood, intent, slots 사전이 포함됩니다.

시작하기 (Python 예제)

# SDK 설치
pip3 install pvrhino
import pvrhino

access_key = "YOUR_ACCESS_KEY"
context_path = "/path/to/your/context.rhn"

rhino = pvrhino.create(access_key=access_key, context_path=context_path)

while True:
    audio_frame = get_next_audio_frame()          # 16비트 PCM, 길이 = rhino.frame_length
    if rhino.process(audio_frame):                # 발화가 완료되면 True 반환
        inf = rhino.get_inference()
        if inf.is_understood:
            print("Intent:", inf.intent)
            print("Slots:", inf.slots)
        else:
            print("이해하지 못했습니다")
        rhino.delete()                            # 네이티브 리소스 해제
        break

다른 언어에서도 동일한 패턴이 적용되며, 각 SDK 는 sample_rate, frame_length, process(), get_inference() 를 노출합니다.


어디서 체험해볼 수 있나요?

  • 웹 데모https://picovoice.ai/demos/barista/ 에서 인터랙티브한 바리스타 데모를 확인하세요.
  • 데스크톱/임베디드 데모demo/ 폴더에는 C, Python, .NET, Java, Flutter, React Native, Android, iOS, Node.js 용 사전 빌드된 예제가 포함되어 있으며, 마이크 실시간 및 파일 기반 추론 모두를 보여줍니다.
  • 벤치마크 – README 에 링크된 speech-to-intent-benchmark 에서 클라우드 서비스와의 공개 비교를 확인할 수 있습니다.

누구를 위한 것인가요?

  • 클라우드에 오디오를 전송하지 않고도 항상 음성 제어가 필요한 IoT/임베디드 장치 (스마트 조명, 커피 메이커, 온도 조절기 등).
  • 오프라인 음성 명령어를 원하는 모바일 앱.
  • 개인정보 보호를 중시하는 웹 애플리케이션.
  • Picovoice Console 을 통해 간단한 YAML 기반 인터페이스로 작은 고정 명령어 세트를 빠르게 정의하고 싶은 프로토타이핑 개발자.

제한 사항

  • 특정한, 제한된 어휘에 최적화되어 있습니다 (한 컨텍스트). 일반적인 음성 인식기와는 다릅니다.
  • 엔진을 로드하려면 액세스 키가 필요합니다 (체험용은 무료, 본격 사용은 상용 라이선스 필요).
  • 지정된 9개 언어 외의 사용자 정의 언어 지원은 상용 고객에게만 제공됩니다.

빠른 참조 링크


TL;DR

Rhino 는 작은 오프라인 신경망을 내장하여 음성 명령어를 구조화된 의도로 변환할 수 있습니다. 마이크로컨트롤러에서 브라우저까지 모든 플랫폼에서 작동하며, 간단한 YAML 기반 콘솔을 통해 사용자 정의 명령어 세트를 정의할 수 있습니다. 고정된 도메인에 대해 신뢰성 있고 낮은 지연의 음성 제어가 필요하다면, Rhino 는 최적의 솔루션입니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트