# Shezem-rs - Rust 기반의 고속 오디오 지문 인식 시스템

> Clean Markdown view of GeekNews topic #20133. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=20133](https://news.hada.io/topic?id=20133)
- GeekNews Markdown: [https://news.hada.io/topic/20133.md](https://news.hada.io/topic/20133.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2025-04-04T09:31:01+09:00
- Updated: 2025-04-04T09:31:01+09:00
- Original source: [github.com/Kither12](https://github.com/Kither12/shezem-rs)
- Points: 10
- Comments: 0

## Summary

Rust 기반의 오픈소스 오디오 인식 시스템 Shezem-rs는 Shazam에서 영감을 받아 고속 인덱싱 및 검색을 제공하며, 간단한 CLI 명령어로 오디오 파일을 처리할 수 있습니다. 이 시스템은 스테레오를 모노로 변환하고 다운샘플링을 통해 효율성을 높이며, STFT를 사용하여 스펙트로그램을 변환하고 피크를 추출합니다. 지문 데이터는 해시로 저장되며, 검색 시 입력 샘플로부터 생성된 지문을 데이터베이스와 비교하여 시간적 연속성을 분석하고 매칭 점수를 계산합니다.

## Topic Body

- Shazam에서 영감을 받은 **고속 오디오 인식 및 식별 시스템**의 Rust 구현 오픈소스   
- 속도, 효율성, 단순성을 중점으로 설계되어 있으며 CLI를 통해 **오디오 파일의 인덱싱 및 검색**을 수행 가능  
### 주요 특징 및 장점  
- **고속 인덱싱 및 검색 속도**: 수백 개 오디오 파일에 대한 빠른 처리 가능  
- **간단한 CLI 명령어**: `index`와 `search` 명령어를 통해 직관적인 사용 방식 제공  
- **Rust 기반 고성능 구현**: 시스템 자원을 효율적으로 사용  
- **Shazam과 유사한 오디오 지문 방식** 채택  
### 내부 동작 방식  
  
#### 사전 처리 (Preprocessing)  
- 스테레오를 모노로 변환 (좌/우 채널 평균)  
- 계산량 감소를 위해 다운샘플링: 44.1kHz → 11.025kHz  
- 다운샘플링 전에는 Nyquist 주파수 이상을 제거하기 위한 IIR 로우패스 필터 적용  
  
#### 스펙트로그램 변환  
- Short-Time Fourier Transform(STFT) 사용  
  - 1024 샘플의 Hamming 창  
  - 50% 오버랩  
- 시간-주파수 도메인으로 변환하여 피크를 추출  
  - 각 시간 창을 주파수 대역으로 나누고, 각 대역에서 가장 높은 진폭만 보존  
  - 평균 이하의 진폭은 제거하여 특성 피크만 유지  
  
#### 지문 데이터 저장 방식  
- 피크들을 해시로 구성하여 저장  
  - 하나의 anchor 피크를 기준으로 주변 피크들과의 상대 위치를 튜플로 저장  
  - (anchor freq, peak freq, delta time) 형태로 구성  
  - 32비트 또는 64비트 정수로 변환 가능  
  
#### 검색 및 정렬 알고리듬  
- 입력 샘플로부터 지문 생성  
- 데이터베이스에서 후보 지문 조회 후 시간 순서대로 정렬  
- 최장 증가 수열(Longest Increasing Subsequence) 기반의 시간적 연속성 분석  
- 슬라이딩 윈도우를 이용하여 가장 밀집된 매칭 피크 구간 탐색  
- 매칭 점수를 계산하고 높은 점수 순으로 결과 정렬

## Comments



_No public comments on this page._
