htsvoice作るメモ Part1

投稿日: 2023/09/24最終更新: 2025/10/09

ogp

はじめに

htsvoiceを作るときのメモです。
今回は、Ubuntu 22.04.3 LTSで作業をしました。

この記事は、前編と後編に分かれていて、前編では、準備とテストを行います。
メモ程度の記事ですので、ある程度ドキュメントを確認するなどして、自分で調べてください。

必要なパッケージをインストール

sudo apt update
sudo apt install -y build-essential bc autoconf python3 ffmpeg sox libsox-fmt-all libpulse-dev libasound-dev hts-voice-nitech-jp-atr503-m001 cmake curl csh libx11-dev flac jq julius sudo open-jtalk open-jtalk-mecab-naist-jdic unzip bc

追記(2025/10/9)
Ubuntu Server 24.04にはbcコマンドが含まれていませんでした。
aptなどでインストールしてください。

必要なファイルをダウンロード

展開とビルド

Segment Adapt

unzip segment_adapt_windows-v1.0.zip

多少の修正が必要ですので、パッチを当てます。

wget https://renorari.net/api/files/d8d397d5-5e16-4f43-929f-f51725abd46a -O segment_adapt_windows-v1.0.patch
cd segment_adapt_windows-v1.0
patch -p1 -d . < ../segment_adapt_windows-v1.0.patch
cd ../

このプログラムは自分で用意した音声データをHTSのDemoに使うためのものです。
後ほどlabelフォルダをこの中にコピーする必要があります。
そのままでは使うことができないので注意してください。

HTK と HDecode

tar zxvf HTK-3.4.1.tar.gz
tar zxvf HDecode-3.4.1.tar.gz
mkdir HTS-2.3_for_HTK-3.4.1
tar jxvf HTS-2.3_for_HTK-3.4.1.tar.bz2 -C HTS-2.3_for_HTK-3.4.1
cp HTS-2.3_for_HTK-3.4.1/HTS-2.3_for_HTK-3.4.1.patch htk
cd htk
patch -p1 -d . < HTS-2.3_for_HTK-3.4.1.patch
./configure
CURRENT=$(pwd)
make CFLAGS="-DARCH=ASCII -I$CURRENT/HTKLib"
sudo make install
sudo cp -r /usr/local/HTS-2.3/bin /usr/local/
cd ../

追記(2025/9/18)
HTKのビルド途中でエラー(-Wint-conversion)が発生する場合があります。
htk/HTKLib/esignal.cもしくはhtk/HTKLib/esignal.hにて

#define ARCH "ASCII"

を記述することで解決できるかもしれません。
(なぜ-DARCHオプションが効かないのかは不明です)

追記(2025/10/8)
arm64環境下で正しく動作しない問題は、このパッチを当てることで解決できるかもしれません。

wget https://renorari.net/api/files/e4aaa98b-da94-4d1b-9842-937389e0a9e6 -O fix_vfloors_eof_arm64.patch
patch -p1 < fix_vfloors_eof_arm64.patch

HTS Engine API

tar zxvf hts_engine_API-1.10.tar.gz
cd hts_engine_API-1.10
./configure
make
sudo make install
cd ../

SPTK

tar zxvf SPTK-3.10.tar.gz
cd SPTK-3.10
./configure
make CFLAGS="-z muldefs"
sudo make install
cd ../

追記(2025/9/18)
SPTKのビルド途中でエラー(-Wimplicit-function-declaration)が発生する場合があります。
SPTK-3.10/bin/lmadf/_lmadf.cにて

#include <stdlib.h>

SPTK-3.10/bin/lmadf/lmadf.cにて

#include <ctype.h>

を記述することで解決できるかもしれません。

HTS Demoを動かす

※試すときは、data/raw/のファイルをa01からa10くらいまでにしておくと早く試せます。

多少の修正が必要ですので、パッチを当てます。

tar jxvf HTS-demo_NIT-ATR503-M001.tar.bz2
wget https://renorari.net/api/files/f391f112-e85d-4f2f-85b8-96521141a8fe -O HTS-demo_NIT-ATR503-M001.patch
cd HTS-demo_NIT-ATR503-M001
patch -p1 -d . < ../HTS-demo_NIT-ATR503-M001.patch
cd data/raw
for name in *; do mv $name ${name/nitech_jp_atr503_m001_/}; done
cd ../labels/full
for name in *; do mv $name ${name/nitech_jp_atr503_m001_/}; done
cd ../mono
for name in *; do mv $name ${name/nitech_jp_atr503_m001_/}; done
cd ../../../
./configure
make