0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Julius音素セグメンテーションキットを使うためのWAVファイルフォーマット変換

Last updated at Posted at 2022-11-11

Julius音素セグメンテーションキットとは

wavファイルとtxtファイルを用意してsegmentation-kitを実行することで、言葉の音素がどのタイミングで発せられているのかをミリ秒で出力してくれます。詳細は下記をご覧ください。

WAVファイルのフォーマット次第では動かない

当初はとりあえずwav形式の音声ファイルならどんなものでも動くと思っていたのですが、たまに出力が空になる現象に遭遇しました。エラーなども出ていなかったため、少し詰まりました。しかしlabファイルと同時に生成されるlogファイルの中身をよく見てみると、Error: adin_sndfile: invalid format といったエラーがはかれていました。ファイルのフォーマットが違うということで改めてjulius-speech/segmentation-kitのREADMEを見に行くと、次の内容が記載されていました。

音声ファイルは WAV形式で 16kHz, 16bit, PCM(無圧縮)形式である必要があり ます。テキストファイルはテキスト形式で、文字コードは UTF-8です。

つまり使えるフォーマットが決まっており、それに対応する必要があるということでした。ちゃんとドキュメントを熟読してから使わないと思わぬ時間を取られてしまうという例でした。

変換コード

以上よりJuliusに対応するフォーマットにwavファイルを変換しましょう。変換後のwavファイルを用いて実行すれば問題なく動きます。librosa.core.loadsrはサンプリングレートのことであり、 16000Hzに指定します。そして出力の際にsubtypePCM_16とすることで量子化bit数を16bitにする事ができます。

import librosa
import soundfile as sf

y, sr = librosa.core.load('sample.wav', sr=16000, mono=True)
sf.write("new_sample.wav", y, sr, subtype="PCM_16") 

参考文献

この記事は以下の情報を参考にして執筆しました。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?