프로그래밍/Raspberry PI

[라즈베리파이] Teachable Machine 오디오 프로젝트(feat. 오프라인)

Beginner:) 2022. 11. 22.
320x100

보통 라즈베리파이에서 음성인식을 한다 하면 Google Cloud 또는 Kakao AI를 사용하는데

단점은 인터넷이 연결되어 있어야 하고 상황에 따라 요금이 부과될 수 있다.

또한 핑거스냅, 박수소리 등 자연어가 아닌 음성은 구분할 수 없다.

이 역할은 Teachable Machine에서 sound 계열 수행이 가능하다.

Teachable Machine에서 이미지 분류는 Python코드가 존재하여서 쉽게 따라 할 수 있다.

그러나 오디오 프로젝트에는 Python예제가 없다.

처음에는 안 되는 줄 알았는데 생각해보면 Tensorflow Lite로 실행하면 되는 것이다.
(정식으로 공부하지 않아서 아이디어가 바로바로 안 떠오른다...)

직접 데이터를 만들고 해도 되겠지만, Teachable Machine의 장점이 심플한 UI와 나 같은 초보도 쉽게 모델을 학습할 수 있다는 점이다. 그래서 라즈베리파이에서 TensorFlow Lite와 Teachable Machine을 활용하여 오디오 프로젝트를 실행해보자.


먼저 환경은
Raspberry Pi 3B Buster(앞으로의 프로젝트는 Buster를 선호한다)
Python3.7

1. TensorFlow Lite 설치
아래의 사이트에서 본인의 os에 맞는 버전을 설치한다. 라즈베리 buster라면 보통 arm32/python3.7이다.
https://www.tensorflow.org/lite/guide/python#install_tensorflow_lite_for_python

글을 읽어보면 알지만 중요한 것은 .tflite모델만 실행한다는 것이다. 실제로 오디오 프로젝트에도 .tftitle 모델을 내보내기 한다.

2. 예제 파일&모델 다운로드

git clone https://github.com/tensorflow/examples.git --depth 1
cd lite/examples/sound_classification/raspberry_pi
sh setup.sh

3. 실행 (+옵션 있음)

python3 classify.py


참고로 나는 Thonny에서 옵션을 넣는 방법을 몰라서 default값을 아예 바꿔버렸다.
터미널로 실행한다면 "--model model.tflite"식으로 변경하면 된다.
소스코드의 help 부분을 보면서 자신의 환경에 맞게 옵션을 변경한다.



4. 하면 utils.py에서 에러가 뜰 수도 있는데 classes가 없다던가..?
직접 출력해보면 알겠지만 classes가 실제로 없다.
아래와 같이 수정

 

아래는 실행 결과이다. 라즈베리파이에서배경 한글은 깨진다.

반응형

댓글