Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Text-to-Speech VSQX powered by Open JTalk / TTSV

yoxxx
August 19, 2018

Text-to-Speech VSQX powered by Open JTalk / TTSV

テキストからのVSQX作成ツール「Text-to-Speech VSQX powered by Open JTalk」(TTSV)の仕組み、各種ロジックの考え方、課題をまとめたものです。

yoxxx

August 19, 2018
Tweet

Other Decks in Programming

Transcript

  1. 1 改訂履歴 改訂年月日 改訂内容 2018/08/11 初版 2018/08/19 ・改訂履歴を追加 ・「7.現状の課題」を「7.現状の課題と既知の不具合」に変更し、認識している 不具合について記述を追加

    2018/08/22 ・既知の不具合T-0002を対応済に更新 2019/06/22 ・既知の不具合T-0001を対応済に更新 ・音階下降ロジックを「自然下降とアクセント下降の組み合わせ」から 「自然下降とアクセント下降の加算」に変更 ・課題に「UTAU(CeVIO)向けに使うためにVSQXを変換してみても 全くしゃべってくれない」の記述を追加
  2. はじめに 2  この ドキ ュメ ント は テ キス

    トか らの VSQX 作 成 ツー ル 「 Text-to-Speech VSQX powered by Open JTalk」(以下TTSV)の仕組み、各種ロジックの背景となる考え方、 課題をまとめたものです。この情報を公開することで改善点が見つかったり 、 他の音声合成ツール向けデータを作るソフトを作る参考になれば幸いです。  作者は音声合成の専門家ではなく、また研究者でもないので記述が適切でなかったり わかりにくかったりすると思いますがご容赦ください。「こういう表現のほうがわかり やすいです」といった指摘は私の勉強になりますし、のちにこのドキュメントを読む方 にも有用ですのでTwitterやニコニコ動画の動画コメントなどでお知らせください。 できる訂正は都度やっていきたいと思います。  Twitter上のデモ動画は以下のアドレスにあります。ソースへのリンクもあります。 https://twitter.com/yo_xxx/status/1023678001295183872  ニコニコ動画上のデモ動画は以下のアドレスにあります。ソースへのリンクもあります。 http://www.nicovideo.jp/watch/sm33606295
  3. テキストからのVSQX作成ツール TTSV(Text-to-Speech VSQX powered by Open JTalk) 仕組み・考え方・課題 1. TTSVの構成

    2. Open JTalkのトレース情報ファイルについて 3. VSQX作成のポイント①初期設定 4. VSQX作成のポイント②発音記号の設定 5. VSQX作成のポイント③音符長さの設定 6. VSQX作成のポイント④アクセント・イントネーション -音符分割の活用、上昇音調、下降音調の制御 7. 現状の課題と既知の不具合 8. 参考資料 3
  4. 1. TTSVの構成 4 TTSVは画面入力したテキストをファイル保存してOpen JTalkを起動し、生成された トレース情報ファイルを入力してVSQXファイルを作成するTI2VSQXを起動します。 ▪トレース情報ファイルの入力 文字列を項目ごとに分解 ※分解結果はXML出力(参考資料用) ▪VSQX初期設定

    シンガー情報、トラック情報、BPM等 ▪音符の配置 トレース情報に従い、音素ごとに発音 記号を編集して音符を配置 ▪イントネーション・アクセント生成 トレース情報のコンテキストラベル とTI2VSQX用設定ファイルから各 音符の高さを計算して音符の高さ調整 ▪VSQXファイル出力(シリアライズ) 画面入力 テキスト HMMテキスト音声合成システム Open JTalk ▪文字列の形態素解析 →音素列・単語列・単語アクセント作成 ▪形態素解析結果からコンテキスト (文脈情報)の作成 ▪音声合成 HMM音声合成ツールキット HTS が コンテキストと音響モデルから 音声合成 トレース情報ファイル(少し改造) ・形態素解析結果 ・HTSに入力したコンテキスト ・HTSの音声合成に基づく音素長さ情報 ※ピッチ情報は持っていない トレース情報ファイルの変換プログラム TI2VSQX
  5. 2. Open JTalkのトレース情報ファイルについて 5 「-ot」オプションをつけてOpen JTalkを起動するとトレース情報を出力します。 ここでは、トレース情報の内容及びTTSV上の使用方法を記述します。 (TTSVではトレース情報ファイルを作業用フォルダに「xxxx_yyyymmdd_hhmmss_Trace.txt」で作成しています) ▪テキスト解析結果([Text analysis

    result]) 形態素解析結果です。VSQX作成には使っていませんが、参考用にXML出力しています。 (TTSVでは作業用フォルダに「xxxx_yyyymmdd_hhmmss_Analysis.xml」で作成しています) ▪出力ラベル情報([Output label]) HTSに入力したコンテキストラベル及び音素ごとの時間位置を持っています。TTSV用に Open JTalkを改造し、音素毎の「モーラ文字(読み言葉)」も出力しています。 VSQX作成のため、音素位置情報及び音素文字、モーラ文字、アクセント核情報、 呼気段落情報を参照しています。また、参考用にXML出力しています。 (TTSVでは作業用フォルダに「xxxx_yyyymmdd_hhmmss_Label.xml」で作成しています) (Open JTalkの改造内容はhttps://github.com/yoxxx/TI2VSQX/blob/master/Modify_jpcommon_label.txt にあります) ▪その他は使っていません。内容も理解できていません。 ▪XMLの項目名の意味はTI2VSQXのソースに書いています。だいたいあってるはず? https://github.com/yoxxx/TI2VSQX/blob/master/TIF.cs
  6. 3. VSQX作成のポイント①初期設定 6 TTSV(のTI2VSQX)はvsq3オブジェクトを作成し、XMLシリアル化(シリアライズ)し てVSQXファイルを作成しています。ここではオブジェクト作成のポイントを記述します。 ▪vsq3オブジェクトのソースコード作成 VOCALOID3のVSQXファイルの情報です。クラスのソースコードはXMLのスキーマ定義 (TINY VOCALOID3 Editorにあるvsq3.xsd)からXMLスキーマ定義ツール

    (Xsd.exe) を使って自動生成し、文字列形式をCDATAセクションに変更しました。 発音記号もCDATAセクションにしたかったのですが…うまくいかずあきらめました。 VOCALOID3 Editorで読めるのでこれでよしとしています。 ▪vsq3オブジェクトの初期値設定 VSQXは1トラック1パート、デフォルトプリメジャー1小節で作り、シンガー名、 compIDは設定ファイル(デフォルトはTTSVConfig.txt)で設定しています。 compIDはライブラリを特定するコードです。VSQXを見ると何を設定するかわかるはず。 トラックのBPMは150で固定し、64分音符の長さが25msになるようにしています。 トレース情報の音素位置(0.1μs単位)から音符長さへの変換を簡単にするためです。
  7. 続き|3. VSQX作成のポイント①初期設定 7 ▪音符ごとのパラメータ設定 音符ごとの各種パラメータは固定値にしています。 基本的にはデフォルト値にしていますが、その中で意図的なものを書きます。 発音記号プロテクト設定:歌詞に音素名を入力している関係上、プロテクトを設定 しないと発音記号が歌詞に応じで書き換わりほとんど「a」になってしまいます。 VEL=64:子音単独で音符を書いた場合、VEL指定は機能しません。 なので、どんな値でもいいのですがデフォルト値にしました。

    ベンドの深さ・長さ0%、ポルタメントは付加しない、アクセント50%、ディケイ0%: Cilliaさんの設定ノウハウそのままです。 なお、音符ごとの情報はトラック内の「Musicalパート」という領域に書いています。 ▪パート内のコントロールパラメータ設定 DYN、PIT、POR、PBS、BRE、BRI、CLE、GENは全く設定してないのでデフォルト値 になっています。これらの音符に紐つかない情報は「位置のtick値とそのときの値」を 持つ情報の配列という形で、「Prosodyパート」という領域に書き込むようです。
  8. 4. VSQX作成のポイント②発音記号の設定 8 TTSV(のTI2VSQX)で音符に発音記号を編集するやり方を記述します。 Open JTalkの仕様や、VOCALOID Editorの仕様が絡んでいます。 ▪無声化 Open JTalkで無声と判断した音素(母音)は、トレース情報上大文字で出力します。

    (A I U E O)そのまま適用すると「テキスト」が「テクスト」と聞こえるといった 違和感が出るので「文末で無声化した時のみ無声化する」としています。 「文末で」は、次の音素が空白(「sil」または「pau」)かで判断し、 発音記号に「Asp」を編集することで無声化しています。 ▪基本的な発音記号取得方法 トレース情報の「モーラ文字」と「音素」に対応する発音記号のテーブルを用意して、 テーブル検索して見つかったものを編集しています。 テーブルを作るにあたってはVOCALOID4 Editor同梱のユーザーマニュアルにある VOCALOID4発音記号一覧表(日本語) を参照しました。
  9. 続き| 4. VSQX作成のポイント②発音記号の設定 9 ※「ん」の発音記号がどうなるかはVOCALOID4 Editorで一つ一つ「んあ」「んい」…と打ち込んで確認しました。 どんなに間が空いていても後ろに音符があると影響してしまうので語末の「ん」にしたいときは発音記号を直接入力してプロテクトを設定する必要があります。 TTSV(のTI2VSQX)で音符に発音記号を編集するやり方を記述します。 「日本語の音韻」が絡む特殊対応も行っています。 ▪「ん」の特殊対応

    「ん」の発音記号は後続の音によって変わるので、モーラ文字が「ン」のときは 次の音素をもとにテーブル検索して発音記号を求めています。文末は「N¥」です。 これはVOCALOID Editorで歌詞を流し込んだときの動きを参考にしています。 [n]・[t]・[d] の前では 歯茎鼻音 [n] になる。 [m]・[p]・[b] の前では 両唇鼻音 [m] になる。 母音、半母音、摩擦音または、 はじき音の前のときは鼻母音になる。 [n]・[t]・[d] の前では 歯茎鼻音 [n] になる。 語末では通常は口蓋垂鼻音[ɴ]に なるはずですが後ろの音符が影響する 語末では通常は口蓋垂鼻音[ɴ]になる ※パート最後の音符はこうなる
  10. 5. VSQX作成のポイント③音符長さの設定 10 音符の長さ設定にはBPMと、VOCALOID Editorの仕様が密接に絡んでいます。 BPMと音符長さとmsの関係を意識するとVSQXの見え方も変わるかも。 ▪64分音符単位で位置・長さ設定している理由 VOCALOID Editorは音符の位置を動かすと「QUANTIZE」で指定した位置にスナップ します。長さを変えると「LENGTH」で指定した長さ単位にスナップします。

    64分音符より細かく長さを設定すると、クオンタイズ指定を解除しないと音符の高さを そのままの位置で動かすこともできず、修正の勝手が悪くなります。 VOCALOID Editorのクオンタイズ指定はこれを推奨します→ ▪BPM150にしている理由と、音符長さの計算方法 BPM150だと64分音符の長さが25msちょうどになり計算がわかりやすいからです。 トレース情報にある音素の位置情報(From~To)は0.1マイクロ秒単位ですが、 下4桁は常にゼロのようです。これをふまえて、以下の計算式で音符長さを求めてます。 音符長さ(tick)=(音素位置の幅(From~To)÷10000÷25)の四捨五入×30 「30」は64分音符1つの長さのtick値です。 ※VOCALOIDの時間分解能は1拍480tick
  11. 6. VSQX作成のポイント④アクセント・イントネーション 11 アクセント・イントネーションの設定は「アクセント観」とVOCALOIDの仕様に基づく ノウハウが絡んでいます。アクセント観の話は課題も多いので、 まずVOCALOIDならでは、の部分を先に説明します。 ▪子音・母音分割を活用した音程変化範囲の制御 VOCALOIDは「音符と音符の間を滑らかに音程変化させる」仕様です。 また、本来同じピッチで発声する部分の母音が大きく音程変化すると違和感が出ます。 これを防ぐために、音素ごとに音符を配置しています。

    なお、母音部分を「子音+母音」の形式で発音記号を編集していますが、 子音の発声位置は子音単独の音符の位置からです。 ▪呼気段落末への「Asp」の音符追加と疑問文対応 発音記号「Asp」の音符は何も発声しませんが、音符の位置に応じてピッチを引っ張り ます。これを利用して、疑問文の場合は呼気段落末の音符「Asp」の音階を 上げています。疑問文か否かの情報はトレース情報ファイルにあります。
  12. 続き|6.VSQX作成のポイント④アクセント・イントネーション 13 ・テキスト音声合成では歴史のある藤崎モデルの「フレーズ成分」=「音調句」と解釈してよいと思います。 ・「アクセント=音程下降」の考え方はもともと、川上蓁さんの「日本語の単語および連濁の音調」で示された考え方のようです。 基本的なアクセント観は杉原満さんの「音声表現から見る共通語の韻律理論」を参考にし ています。アクセントはOpen JTalkのアクセント情報を参照し、イントネーションは 暫定的に1呼気段落(後述)で1音調句として独自計算で求めています。 説明の前提としてアクセント・イントネーションにかかる言葉を定義します。 ▪アクセント・イントネーションにかかる言葉の定義

    「アクセント=音程下降」観に基づくので人によっては違和感あるかもです。 「音声表現から見る共通語の韻律理論」表1を引用しています。 用語 音程変化の要素 主な機能 アクセント 下降の有無とその位置 1語のまとまりを示す,語彙を識別する イントネーション 句頭音調 句頭の上昇の有無 句のはじまりを示す 句頭の上昇の変化(上昇幅・速度) 話者の意図・態度を示す 句末音調 句末(文末)の変化のしかた 話者の(話題や聞き手に対する)態度を示す 音調句 句頭の上昇で始まる音調のまとまり 句のまとまり(=意味のまとまり)を示す 自然下降 句中の緩やかな下降 句の長さが予測できる
  13. 続き|6.VSQX作成のポイント④アクセント・イントネーション 14 単語1つで完結する簡単な言葉「おはようございます」をもとに、 句頭上昇とアクセントの設定方法を記述します。 モーラ文字 オ ハ ハ ヨ ヨ

    ー ゴ ゴ ザ ザ イ マ マ ス ス Pau 音素 o h a y o o g o z a i m a s U Pau アクセント 核までの モーラ数 -7 -6 -6 -5 -5 -4 -3 -3 -2 -2 -1 0 0 1 1 xx 句頭上昇 自然下降 アクセント下降 ・句頭上昇は基本的に「2モーラ目の間で上昇を終わらせる」ようにしています。 ・上昇を完了したらアクセント核(数字がゼロ)まで自然下降していきます。 ・アクセント核より後の言葉は音調句末に向かって音程を下げていきます。 ・音程の動きが直線的なのは、作り方がわからなかったからで強い意図はないです。 Base Middle Top NaturalEnd Bottom 設定ファイルで指定した音の高さに従って 音符の高さを決めています
  14. 続き|6.VSQX作成のポイント④アクセント・イントネーション 16 音調句内に複数のアクセント句がある場合は、自然下降とアクセント下降の加算で 下降音調を作っています。「暑中お見舞い申し上げます」を例に記述します。 モーラ文字 シ ョ シ ョ チ

    ュ チ ュ ー オ ミ ミ マ マ イ モ モ ー シ シ ア ゲ ゲ マ マ ス ス sil 音素 sh o ch u u o m i m a i m o o sh i a g e m a s U Sil アクセント 核までの モーラ数 - 2 - 2 - 1 - 1 0 - 1 0 0 1 1 2 - 5 - 5 - 4 - 3 - 3 - 2 - 1 - 1 0 0 1 2 xx 句頭上昇 自然 下降 緑色部分は自然下降+ アクセント下降① 自然下降(黄色部分も) 緑色部分は自然下降+ アクセント下降② ・自然下降の傾きは、音階の頂点位置から音調句末で自然下降音階になる想定で求めてます。 ・アクセント下降の傾きは、自然下降音階からアクセント下降する文字だけで音調句末で 句末の音階になる想定で求めています。 ・開始から句読点まで(呼気段落)を1音調句としているので、文章が長くなると本来行う 音階の立て直しを行わず、イントネーションの違和感が大きくなります。 NaturalEnd Bottom ※改めて見ると、下降にはいってからの自然下降の傾き計算が失敗して、音階が下がってない気がします・・・・。 計算式見直しで多分大丈夫なはず。
  15. 7.現状の課題と既知の不具合 17 このドキュメント作成時点のTTSVは「テスト版」であり課題は多くあります。 解決したいものもありますが割り切っているものもあります。 まずはソフトウェアとしての課題から。 ▪例外処理がない Open JTalkがエラーメッセージをだしてもTTSVは検知しません。 TI2VSQXはエラーになってもエラーメッセージも出さずに終わってしまいます。 オブジェクト編集内容がおかしくてもそのままVSQXを書き出して、VOCALOID

    Editor で読むと読めない、といったこともあります。生成ロジックが落ち着いたところで 見直したいところです。 ▪設定周りの指定が面倒など、GUIが貧弱 各種の設定は別途テキストファイルを編集しておくため、操作画面から設定を変えられ ません。これは当面そのままにするつもりです。多分、慣れていくとコマンドラインや テキストエディタのマクロからOpenJTalk、TI2VSQXを起動してVSQX生成するとか やっていく人がでて、結局GUIは使われなくなる予感もしているので。
  16. 続き| 7.現状の課題と既知の不具合 18 VSQX生成では割り切っているところも結構あります。 ▪音符は子音・母音を分割しないほうがみやすい 対応予定はありません。ボーカロイドエンジンの音程変化に対抗してピッチを描いたり 子音音素長さに対応するVELパラメータを求めたりするロジックは思いつきません。 ▪文末でDYNを下げるなどパラメータを適宜調整したほうが品質が上がるのでは 対応予定はありません。ライブラリの特性を理解するのが前提になるロジックは 実装する労力の割に得られるものが少ないという認識です。

    ▪妙に音符が長いことがある 音響モデルによって特定の文字が長くなることがあるようです。 Open JTalkに依存する部分は手を付ける予定はありません。 ▪アクセントがおかしいことがある Open JTalkの辞書に依存する部分は手を付ける予定はありません。 TASETを使えばアクセント推定の精度が上がる、という話があるようですがWindowsで TASETをふまえたOpen JTalkが作れるのかわかっていません。
  17. 続き| 7.現状の課題と既知の不具合 19 イントネーション・アクセントに基づくピッチカーブ生成は何とかしたいですが プログラミング技術も、日本語や音声に対する知識も足りてません。 ▪自然下降も、アクセント以降の下降も、なんかおかしい 多分直線的な下降ではなく自然対数を使ったほうがよさそうな気がします。 ただ、良いやり方がわかっていません。 ▪一息の文章が長いと違和感が出る 呼気段落内で音調句を分割してイントネーションを立て直せば、というところまでは

    わかっていますが分割基準がよくわかっていません。 ▪藤崎モデルでピッチカーブ生成して、加減は投入パラメータの大きさで調整しては 藤崎モデルの数式と、パラメータの求め方のロジックが作れれば、たぶんできます。 とはいえ、適切な音調句(フレーズ成分)で分割できないとやっぱりおかしくなる はずなので当面の課題を解消してからでしょうか。 ▪方言への対応 トレース情報ファイルの情報からイントネーションを求められれば面白そうです。 ▪VSQX生成前にイントネーションを修正したい TI2VSQXに入力するトレース情報ファイルを書き換えればできそうですが 今のところ適切なインタフェースが思いつきません。
  18. 続き| 7.現状の課題と既知の不具合 20 もともとTTSVはボーカロイド向けに考えていたので別の歌声合成ソフト向けの変換は 考えていませんでした。ただ、それなりに需要がありそうだったので最低限の対応をして います。 ▪UTAU(CeVIO)向けに使うためにVSQXを変換してみても全くしゃべってくれない ・歌詞の部分は発音記号そのままにしていましたが、母音部分はモーラ文字をひらがな 変換したものを編集するようにしました。 ・さらに、「

    TTSVConfig.txt 」で「NoteSplitMode =2」を指定すると、子音単独 音符部分は前の音符の母音部分を伸ばした音符を編集します。これで、音符の歌詞の 部分はすべてモーラ文字が入るので、変換しやすくなるはずです。 ・但し、「NoteSplitMode =2」では子音の長さは一定のため、子音単独音符部分が 長い場合は不自然な発音になります。 Ex.「ます」を入力した場合([]内は発音記号) NoteSplitMode=1 の場合:「 m[m] 」「ま[m a ]」「 s[s]」「す[s u]」 NoteSplitMode=2 の場合:「Asp[Asp]」「ま[m a ]」「あ[a]」「す[s u]」 ※ NoteSplitMode=2 では「ます」ではなく「まあす」と聞こえてしまう。 ・歌詞をもとにした変換を行う場合に無声化情報は反映できません。
  19. 21 続き| 7.現状の課題と既知の不具合 No. 発生年月日 事象と対応 T-0001 2018/08/18 【事象】「えと、あの」でVSQXが生成できない 【対応状況】対応済(2019/06/22)

    ・原因調査の結果「文末までの文字数が2文字以下の場合に音程 下降開始位置が取得できず、VSQX生成で例外が発生する」こと が判明しました。音程下降ロジック見直しのときに合わせて 修正しました。文末までの文字数が2文字のときは2文字目、 1文字のときは1文字目としています。 T-0002 2018/08/18 【事象】TTSVのファイル作成用フォルダのボタンを押すと 「System.IO.FileNotFoundException」で落ちる 【対応状況】対応済(2018/08/22) ・WindowsAPICodecPackを参照できなかったのが落ちる 理由でした。アーカイブに同梱しました。 作者が不具合と認識した事象について記録します。
  20. 22 8. 参考資料 TTSVを作るにあたって参考にした資料及び参考になりそうな資料を提示しておきます。 NII Today 第65号/2014年9月発行 音声の合成と認識 ~声をつくる、声を聞く~ https://www.nii.ac.jp/about/publication/today/65.html

    HMM音声合成の説明はこれが詳しいです。 lab_format.pdf http://open-jtalk.sourceforge.net/ の「HTS voice version 1.05」の「Binary Package」からダウンロードしたファイル 「hts_voice_nitech_jp_atr503_m001-1.05.tar.gz」の中にあります。 TI2VSQXのソースコメントにある項目名はこの資料を自分なりに和訳したものです。 Windows10でOpenJTalkを使い合成音声をつくる http://kuuur.net/tech/movie-voice/openjtalk Open JTalkのバイナリはここのページを見て作りました。
  21. 23 続き|8. 参考資料 TINY VOCALOID Editor同梱 スキーマ定義(vsq3.xsd) vsq3オブジェクトの内容を理解する助けになりました。アップデートとともにスキーマ 定義からコメントが消えてしまったのでTINY VOCALOID

    Editor同梱のものが良いです。 日本語の音韻-Wikipedia https://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%81 %AE%E9%9F%B3%E9%9F%BB 「撥音/N/の子音」の記述が「ん」の特殊対応の背景にあります。 「黒田とCilliaのVOCALOID4ゆっくり調教」 http://web.archive.org/web/20151022143712/http://www.vocaloid.com/vocaloid 4/content/yukkuri/ 残念ながらアーカイブ入りしたページです。音符のプロパティの設定値の参考にしました。 真面目な調教日記(164さんのブログから) http://web.archive.org/web/20110729084205/http://203soundworks.jugem.jp:8 0/?eid=259 残念ながらアーカイブ入りしたページです。子音を分割して前の音符と近い場所に置き、 母音を大きく音程変化させないアイデアはここから来ています。
  22. 24 続き|8. 参考資料 音声表現から見る共通語の韻律理論 https://www.nhk.or.jp/bunken/summary/kotoba/research/028.html 概要にあるとおり「近年の共通語の韻律研究を概観する」記述がまとまりがよいです。 NHKアクセント辞典改訂の背景となった「アクセントを音の下降に限定し、音の上昇部分 は意味によって変化するイントネーションの一部とするモデル」の説明もあります。 日本語文章音声の合成のための韻律規則 https://www.jstage.jst.go.jp/article/jasj/50/6/50_KJ00001456955/_pdf

    「藤崎モデル」のもともとの論文です。 音声基本周波数の藤崎モデル指令列の統計的語彙モデル https://ipsj.ixsq.nii.ac.jp/ej/?action=pages_view_main&active_action=repository_ view_main_item_detail&item_id=91815&item_no=1&page_id=13&block_id=8 録音音声のピッチから藤崎モデルのパラメータを推定する研究論文です。 説明の前提としての藤崎モデルの数式説明が比較的簡潔です。
  23. 25 続き|8. 参考資料 CRFを用いた日本語アクセント結合推定 https://sites.google.com/site/suzukimasayuki/accent TASETの配布サイトです。 TASET に関する論文へのリンクもあります。 utawaview -

    UTAUの合成wavファイルを定期監視して波形表示するソフト。 http://nwp8861.web.fc2.com/soft/utawaview/index.html 「UTAUの」とありますがUTAUでないwavファイルでも問題ありません。 波形表示したりピッチカーブを表示したりするソフトはほかにもありますが、 32分音符単位といった細かい単位で範囲指定再生する機能が便利でこれを使っています。 ソース改造して64分音符単位の縦線を引き、音程変化する範囲の見極めに使いました。 使用上の注意点として「実行ファイル、再生するwavファイルのパスともに空白を含んで いるとそもそも実行できなかったりピッチカーブが表示できない」点があります。