paint-brush
로컬 시스템에서 Piper Speech Synthesizer를 설정하는 방법~에 의해@biq
2,112 판독값
2,112 판독값

로컬 시스템에서 Piper Speech Synthesizer를 설정하는 방법

~에 의해 biq2m2023/12/18
Read on Terminal Reader

너무 오래; 읽다

파이퍼, 파이퍼 휘슬 및 명명된 파이프를 사용하여 임시 로컬(오프라인) 텍스트 음성 변환 합성기를 설정하는 방법을 살펴보겠습니다.
featured image - 로컬 시스템에서 Piper Speech Synthesizer를 설정하는 방법
biq HackerNoon profile picture
0-item
1-item

Piper, Piper -Whistle 및 Named Pipe를 사용하여 임시 로컬(오프라인) 텍스트 음성 변환 합성기를 설정하는 방법을 살펴보겠습니다.


GNU/Linux 기반 시스템에서 파이퍼를 설정하기 위해 명명된 파이프를 사용하는 일반 아키텍처를 설명하겠습니다. 이는 약간의 수동 설정과 파이퍼의 도움으로 시스템 전체의 텍스트 음성 변환을 허용할 만큼 충분히 간단합니다. -휘파람 소리와 약간의 절충점(간단하지만 병렬 음성 처리를 지원하지 않습니다).


시작하려면 github에 호스팅된 저장소 (이 글을 쓰는 당시 2023.11.14-2 )에서 구축된 최신 파이퍼 독립 실행형을 가져오겠습니다. 압축된 아카이브를 다운로드한 후 파이퍼 설정을 위한 디렉터리 구조를 만듭니다. 루트 디렉터리는 다음 하위 디렉터리와 함께 /opt/wind 에 있습니다.


  • /opt/wind/piper (파이퍼가 내장되어 있음)
  • /opt/wind/channels (이름이 지정된 파이프가 포함됨)


압축을 푼 후에는 파이퍼 실행 파일을 /opt/wind/piper/piper 와 함께 제공되는 라이브러리 및 espeak-ng-data 에서 사용할 수 있습니다.

Piper가 사용하는 음성 모델을 관리하려면 Python으로 작성된 명령줄 유틸리티인 Piper-whistle을 사용하는 것이 좋습니다. 이를 사용하면 음성을 더 편리하게 다운로드하고 관리할 수 있습니다.


gitlab 또는 github 릴리스 페이지에서 최신 휠 파일을 얻을 수 있습니다. 휠 파일을 설치한 후 음성을 가져와서 음성을 생성해 보겠습니다. 먼저 piper_whistle -vR 호출하여 데이터베이스를 업데이트하겠습니다. 영어발화에서는 알바라는 여자 목소리를 꽤 좋아해요. 휘파람을 사용하면 piper_whistle list -l en_GB -i 2 를 사용하여 사용 가능한 모든 영어(GB) 음성 목록을 얻을 수 있습니다. 음성은 인덱스 2에 있습니다. 따라서 설치하려면 간단히 piper_whistle install en_GB 2 호출하세요.


다음으로 필요한 명명된 파이프를 만들어 보겠습니다. 결과 구조는 다음과 같습니다.

  • /opt/wind/channels/speak (JSON 페이로드 허용)
  • /opt/wind/channels/input (파이퍼가 읽음)
  • /opt/wind/channels/ouput (파이퍼가 작성)


명명된 파이프를 생성하려면 다음 명령을 사용할 수 있습니다: mkfifo -m 755 /opt/wind/channels/input


마지막으로 별도의 셸에 세 가지 프로세스를 만듭니다.

  • tty0: tail -F /opt/wind/channels/speak | tee /opt/wind/channels/input
  • tty1: /opt/wind/piper/piper -m $(piper_whistle path alba@medium) --debug --json-input --output_raw < /opt/wind/channels/input > /opt/wind/channels/output
  • tty2: aplay --buffer-size=777 -r 22050 -f S16_LE -t raw < /opt/wind/channels/output


tty0의 프로세스는 파이퍼나 플레이 에 의한 처리가 완료된 후에도 파이프가 열린 상태로 유지되도록 합니다. 이런 방식으로 TTS 요청을 대기열에 추가한 후 재생하거나 저장할 수 있습니다.


Piper-whistle은 위의 구조를 사용하는 경우 추가 기능을 제공하므로 이제 piper_whistle speak "This is quite neat" 음성을 생성할 수 있습니다. X11이 있는 시스템에서는 piper_whistle speak "$(xsel --clipboard --output)" 을 통해 클립보드에 텍스트의 음성 버전을 생성할 수 있습니다.