본문 바로가기
자동차 이야기/샤오미 70Mai

샤오미 4K 2채널 블랙박스, 70mai A800 에 한국어 음성 다시 입히기(with 네이버 클로바더빙)

by 이런 저런 2020. 10. 2.

70mai A800을 받아 사용중인데, 아직 초기제품이다보니 자잘한 버그도 있고 타임랩스나 주차상시감시 모드 등 제대로 지원하지 않는 기능도 여럿 있습니다.

그 중 특히 거슬리는게 바로 한국어 음성인데, 70mai A800의 경우 이전 70mai Pro와 동일하게 한국어 음성을 지원하기는 하지만, 번역과 음성의 품질 모두 엉망입니다.

하지만 이 제품의 경우 SSH 서버 기능이 활성화 된 커스텀 펌웨어가 없어 그냥 써야 하나 고민하다 없으면 직접 만들어야지.. 라는 주의라 커스텀 펌웨어를 제작해봤습니다.

이 글에서 사용된 펌웨어 및 수정 펌웨어는 글 말미에서 링크로 제공합니다.

 

펌웨어 다운로드

먼저 펌웨어를 다운로드 받은 후 압축을 해제해 봅니다.

펌웨어는 앱으로 다운로드 가능하지만 전 4pda.ru에서 올려놓은 펌웨어를 다운받아 사용했습니다.

현재 공개된 펌웨어는 1.0.0, 1.0.1, 1.0.6의 세가지 버전인데 저는 이 중 1.0.1을 사용했습니다.

다운받은 펌웨어 파일의 압축을 하드드라이브에 풀어준 후 살펴봅니다.

보다보니 파일의 확장자가 ubifs 인 것들이 있는데 이건 UBI file System 그러니까 리눅스에서 지원하는 NAND 플래시용 파일 시스템인 것 같습니다.

파일 형태를 보면 아마 이것들이 펌웨어 업데이트시 70mai A800의 플래시메모리에 기록될 것일 듯 해 이걸 풀어보기로 했습니다.

UBI 에서 파일 추출하기

ubi 이미지에서 파일을 추출하는 과정입니다.

70mai A800의 펌웨어가 리눅스 기반이다보니(대부분 임베디드 시스템이 그러하듯) 파일 편집을 위한 툴 역시 리눅스용으로 지원합니다.

따라서 직접 수정하려면 리눅스, 또는 유사한 POSIX OS(맥OS)같은 환경에서의 작업이 필요하며 윈도우 자체에서는 작업환경을 세팅하는데 좀 까다로울 듯 합니다.

전 윈도우 10의 WSL2에 설치된 우분투를 통해 이 작업을 수행했으며 WSL2 세팅 및 프로그램 사용 방법에 대한 자세한 소개는 생략하도록 하겠습니다.

먼저 ubi 파일시스템 제어를 할 수 있는 툴인 ubi_reader 를 설치합니다.

이 툴은 python 으로 만들어져 있으며 사용시 python 2.7 이상 버전을 요구합니다.

apt update && apt install liblzo2-dev python-lzo
pip install ubi_reader

전 pip를 통해 설치했지만, 아래 github 주소에서 프로젝트를 클로닝 한 후 직접 setup.py 파일을 실행해 설치할 수도 있습니다.

github.com/jrspruitt/ubi_reader

 

jrspruitt/ubi_reader

Collection of Python scripts for reading information about and extracting data from UBI and UBIFS images. - jrspruitt/ubi_reader

github.com

툴 사용에 대한 자세한 옵션도 설명되어 있으니 직접 작업하실 분들은 한 번 방문하시는 것을 추천합니다.

그 다음 압축을 해제한 디렉토리로 이동해 이미지 압축을 풀어줍니다.

압축을 풀어본 결과 보이스 파일들은 appfs.ubifs 안에 들어있는 것이 확인되었으니 아래 명령어를 입력해 해당 파일을 풀어주면 됩니다.

ubireader_extract_files -k appfs.ubifs

압축을 풀어주면 해당 디렉토리에 ubifs-root 라는 새로운 디렉토리가 생성된 것을 볼 수 있습니다.

(편의상 터미널과 탐색기 결과를  왔다갔다 하며 보여드립니다.)

파일 경로를 계속 찾아들어가다 보면 ubifs-root/[숫자]/ubifs 아래 이미지와 같이 설치되는 파일들이 표시됩니다.

여기서 경로를 계속 타고 bin / res 까지 다시 이동해 보면 아래 이미지 처럼 voice라는 폴더를 찾을 수 있습니다.

이제 거의 다 왔습니다.

voice 폴더를 다시 들어가 줍니다.

그럼 사진처럼 중국어, 영어, 일본어, 한국어, 공용(종료음 등), 포르투갈어, 러시아어, 스페인어 폴더를 볼 수 있습니다.

우리에게 필요한 건 korean 이니 korean 폴더로 들어가보면 아래 사진처럼 총 54개의 파일들이 있습니다.

이제 이 파일들을 복사해서 하나씩 들어본 후 스크립트를 따고 네이버 클로바를 이용해 다시 제작해주면 됩니다.

텍스트 음성화

텍스트를 음성화(TTS) 하는데는 여러 툴이 있지만 사용해 본 바 네이버 클로바보다 더 깔끔하고 자연스럽게 한국어를 생성해주는 무료(또는 개인용으로 커버 가능한 수준의 금액의 유료) 서비스는 없는 듯 합니다.

그래서 이번에도 네이버 클로바를 이용해 변경작업을 진행했습니다.

진행 방법은 이전 글 링크로 대신합니다.

bjk110-2.tistory.com/128#tts

 

샤오미 블랙박스, 70Mai Pro 에 한국어 음성 적용하기

샤오미 70mai pro 블랙박스의 경우 사용된 하드웨어(소니 IMX355)에 비해 저렴한 가격으로 많은 인기를 얻고 있지만 기능적으로는 아직 다양한 기능을 제공하는 국내 블랙박스들에 비해 부족한 면이

bjk110-2.tistory.com

파일 변환(mp3 -> m4a)

네이버 클로바를 통해 변환된 파일은 mp3 포맷으로 제공하지만 70mai 의 경우 aac로 압축된 m4a 파일 포맷을 사용하니 파일을 이에 맞게 변경해줘야 합니다.

변경 작업은 "Pazera Free Audio Extractor" 를 통해 진행하며 파일은 아래 링크에서 다운로드 받을 수 있습니다.

www.pazera-software.com/products/audio-extractor/

 

Pazera Free Audio Extractor - Free audio converter

Universal audio converter. Extract and convert audio tracks from audio and video files to MP3, AAC, AC3, WMA, OGG, FLAC, M4A, WV, WAV and other formats.

www.pazera-software.com

파일을 다운로드 받은 후 설치 또는 실행하면 아래와 같은 화면이 나오는데, 여기에 만들어진 mp3 파일들을 넣고 변환 버튼을 누르면 됩니다.

제 경우 출력 형식은 m4a, 비트레이트는 64kbps, 샘플링 주파수 48000Hz, 채널은 모노, 그리고 오디오 프로파일은 AAC-LC 를 사용했습니다.

작업하실 때 동일하게 하시면 되며, 주의할 점은 음성파일의 총 용량이 원본보다 높을 경우 이미지 파일 만들때 문제가 생기기 때문에 변환 결과물의 용량 총합이 원본 파일과 같거나 작게 해야 합니다.

작업 완료 후 아까 압축을 풀어 둔 디렉토리로 이동해 원래 있던 korean 아래 모든 파일을 새로 만든 파일로 덮어씌우기 하면 이미지 재 제작을 위한 준비가 완료됩니다.

UBI 이미지 재 제작

앞서 작업하던 터미널로 돌아와서 아래 명령어를 입력합니다.

ubireader_utils_info appfs.ubifs

이 명령어는 ubifs 를 재 제작하기 위한 원본파일의 볼륨 정보를 분석하고 이를 이용한 빌드 스크립트를 자동으로 생성해줍니다.

위 이미지를 보면 아까 새로 생성된 폴더 내에 .sh 와 .ini 확장자를 가진 2개의 파일을 새로 만든것을 볼 수 있습니다.

이 파일을 각각 작업폴더(펌웨어 압축을 처음 푼 경로)로 옮겨줍니다.

그리고 sh 파일을 텍스트 에디터 등으로 열어줍니다.

위 이미지가 해당 파일의 내용으로 mkfs 툴을 사용해 파일 시스템을 만들어 준 후 이걸로 ubi 이미지를 만들어 주는 작업을 자동으로 해 주는 툴입니다.

$1 파라미터가 존재하니 스크립트로 경로를 입력해 줘도 되지만 어차피 파일을 열어 수정한 만큼 경로도 수정해주기로 합니다.

위 파일 내용 중 $1 부분을 재압축할 데이터가 있는 경로 (아까 ubireader_extract_files 명령어를 사용해 압축을 풀어낸 파일 중 ubifs 폴더가 있는 위치) 를 지정해줍니다.

제 경우라면 아래처럼 되겠군요.

/usr/sbin/mkfs.ubifs -m 2048 -e 126976 -c 338 -x lzo -f 8 -k r5 -p 1 -l 4 -r /mnt/d/70mai/A800/Firmware/1.0.1/ubifs-root/322422425/ubifs img-322422425_0.ubifs

파일을 저장한 후 아래 명령어를 입력해 스크립트를 실행하면 자동으로 빌드가 됩니다.

./create_ubi_img-322422425.sh

모든 빌드작업을 완료한 후 디렉토리를 보면 아래와 같이 ubi파일, ubifs 파일이 각각 생성된 것을 볼 수 있습니다.

이제 appfs.ubifs 파일을 지워주고 img-322422425.ubi 파일의 명칭을 appfs.ubifs 로 바꿔주면 작업이 마무리됩니다.

작업완료 후 원래의 8개 파일을 제외한 작업 중간결과물들은 모두 삭제해도 무방합니다.

펌웨어 업데이트

70mai A800 본체에서 미리 포맷해 둔 메모리의 루트 디렉토리에 펌웨어 파일을 모두 옮깁니다.

펌웨어 업데이트는 70mai Pro 와 동일하게 4개 버튼 중 가장 오른쪽 버튼과 전원버튼을 같이 누르면 시작됩니다.

자세한 내용은 아래 영상을 참고해주세요

 

 

파일 다운로드

상기 내용은 직접 작업하거나 수정하실 분들을 위한 설명이며, 바로 펌웨어를 적용하실 분들은 아래 자료를 직접 다운로드 받으시면 됩니다.

가장 먼저 한국어 음성패치가 완료된 펌웨어입니다.

바로 펌웨어를 적용할 분들은 이 링크를 다운받으시면 됩니다.

  • 한글 음성 적용 펌웨어 다운로드 링크
버전 링크 설명
1.0.1 파일 다운로드 1.0.1 펌웨어
1.0.6 파일 다운로드 1.0.6 펌웨어, 이 버전부터 후방카메라 연결시에도 전방 4K 녹화가 가능함

다음은 순정 펌웨어입니다.

  • 순정 펌웨어 다운로드 링크
버전 링크 설명
1.0.0 파일 다운로드 초기 출시 버전
1.0.1 파일 다운로드 개선 버전, 최초 일부 제품을 제외하곤 이 버전이 기본 탑재되어 판매됨
1.0.6 파일 다운로드 현재 최신 버전, 이 버전부터 후방카메라 연결시에도 전방 4K 녹화가 가능함

마지막은 작업 파일들입니다.

  • 작업 파일 다운로드 링크
항목 링크 설명
음성 스크립트 스크립트 보기 70mai A800 제공 음성 및 설명, 한국어 번역 자료
음성 팩 파일 다운로드 네이버 클로바 더빙을 이용해 한국어 스크립트를 m4a 포맷으로 제작한 음성 팩

 

댓글