Thinking Skeever

Skyrim/The Witcher 3 Modについてのあれこれ。FoModの作り方、Mod導入時のトラブル事例などのニッチな話を書いていきます。a.k.a. BowmoreLover@nexusmods

Skyrim自作Mod: Yakitori Audio Converter 利用ガイド (v1.4版)

NexusModsで公開中のSkyrim/Skyrim SE/Fallout用 音声ファイル変換ツール Yakitori Audio Converter の利用ガイドです。

配布場所
NexusMods Skyrim https://www.nexusmods.com/skyrim/mods/73100/
NexusMods Skyrim Special Edition https://www.nexusmods.com/skyrimspecialedition/mods/17765/
NexusMods Fallout4 https://www.nexusmods.com/fallout4/mods/9322/

Yakitori Audio Converter 利用ガイド (v1.4版)
f:id:thinkingskeever:20151114030550p:plain

1. はじめに

Yakitori Audio Converterは、数あるオーディオコンバーターの「もう1つの」オーディオコンバーターです。このツールはfuz, xwm, wav, mp3といった音声ファイルを相互に変換します。
標準ではfuz,xwm,wavファイルを取り扱えますが、別途LAMEFFmpegをダウンロードしてインストールすれば、より多くの音声ファイル形式を取り扱うことができます。

ご活用ください!!


なぜYakitoriなのか?
最初は「Yet Another Audio Converter」という名前で公開しましたが、同名のツールがあること知り、混乱を避けるために別の名前を考えることにしました。それから居酒屋に行ってビールと焼き鳥を頼んだところでこの名前を思いつきました(特に理由はないがYで始まる名前にしたかった)。




f:id:thinkingskeever:20151114030550p:plain

2. 動機と目的

私はバニラやMODの音声ファイルを一般的な形式(wavやmp3)に変換して、Auddacityで編集したりメディアプレイヤーで再生したりすることが多いです。この手の作業にはJonB氏のSkyrim Audio Converterが比較的要件を満たしており、ずっと愛用していました。ですが私のPCでは少し不安定になることがあるのと、追加の変換パラメータを指定したかったのでこれを作ることにしました。
Skyrim Audio Converterが大きな開発の動機を与えてくれたことを強調させてください。JonBさん、ありがとう!

NexusModsにある同様のツールでは、内部的な変換の流れが隠蔽されていて、あるオプションが具体的にどの外部ツールに影響を与えるのか不明確です。これはUIを単純化して使いやすくするのに役立ちますが、変換エラーが起こったとき、外部ツールのオプションを調整してエラー回避するのが難しいことがあります(要はつぶしが効かない)。
このツールでは、変換の流れと外部ツールのパラメータ(引数)を明確に示し、かつ外部ツール毎の変換オプションを設定できるように設計しました。少し複雑ではと感じるかもしれませんが、基本的にはデフォルトの設定で変換できますので心配ありません。


f:id:thinkingskeever:20151114030550p:plain

3. 主な特徴

変換ファイルの選択

  • メニューまたはドラッグ&ドロップで変換したいファイルを選択し、ファイル一覧に追加できます。
  • ファイル、フォルダ、bsa/ba2ファイルを選択できます。
  • ファイル一覧からチェックボックスを使って変換するファイルを選ぶことができます。

音声ファイルの変換

  • 標準ではfuzとxwmとwavファイルの変換ができます。lipファイルも一緒に取り扱えます。
  • LAMEがインストールされている場合、wavとmp3ファイルの変換ができます。
  • FFmpegがインストールされている場合、wavと一般的な音声ファイル形式(mp3, ogg, flac, aiffなど)間の変換、および一般的な動画ファイル形式 (avi, flv, mpg, mp4など)からの変換ができます。
  • 出力ファイルは入力ファイルと同じフォルダ、または指定のフォルダに出力できます。
  • 「サブフォルダの作成」オプションを選べば、出力フォルダに入力ファイルのフォルダ階層を再現できます。「サブフォルダ」は追加されたフォルダまたはbsa/ba2ファイルのパスを基準に決定されますので、ファイル単体を追加した場合には作成されない点に注意してください。
  • 様々な変換オプションが設定できます。少し難しそうですが心配無用。基本的にはデフォルトの設定で問題なく変換できます。
  • xwmファイルとlipファイルをfuzファイルにマージするのが容易です。xwmファイルと同じフォルダに同名のlipファイル配置するだけで取り込めます。

ユーザーインターフェース

  • 使いやすいファイル一覧(と思っている)。音声ファイルは状態によりカテゴリ分けされます。一覧には変換の結果やlipファイルの有無といった便利な情報が表示されます。ヘッダをクリックして一覧をソートすることもできます。
  • 右クリックメニューから入力/出力ファイル、入力/出力フォルダ、bsa/ba2ファイルを開けます。bsa中のファイルやfuzファイルは必要に応じて自動的に一時フォルダに展開されます。
  • 設定はすべてiniファイルに保存され、次回起動時に引き継がれます。
  • ヘルプメニューからLAMEFFmpegのコマンドヘルプをメモ帳で表示できます。コマンドプロンプトを開いてヘルプメッセージを読む必要はありません。追加の引数を指定する際に役立つはずです。
  • 多言語サポート。今のところ英語と日本語に対応しています。

性能

  • 変換はマルチスレッド・マルチプロセスで並列処理されます。お使いのCPUの論理プロセッサ数が並列度のデフォルトで、さらにUIから変更することもできます。
  • 大量のファイル(特にNPCの対話音声を含むbsa)を開くとUIが重たくなりますが、変換処理自体に影響はないはずなのでご容赦を(正直私の力不足です)。もしNPCの対話音声を探して展開したいのであれば、私の別ツール Lazy Voice Finder を試してください(そういった用途専用に作られています)。


f:id:thinkingskeever:20151114030550p:plain

4. 対応するファイル形式

入力形式

音声形式

ファイル形式 拡張子 必要ツール
fuze .fuz
xwma .xwm
wave .wav
mp3 .mp3 LAME または FFmpeg
ogg .ogg/.oga FFmpeg
flac .fla/.flac FFmpeg
aiff .aif/.aiff FFmpeg
wma .wma FFmpeg
mp4 .m4a FFmpeg

動画形式

ファイル形式 拡張子 必要ツール
asf .asf FFmpeg
avi .avi FFmpeg
flv .flv FFmpeg
mov .mov/.qt FFmpeg
mp4 .mp4 FFmpeg
mpeg .mpg/.mpeg FFmpeg
ogg .ogv/.ogx FFmpeg
web-m .webm FFmpeg
wmv .wmv FFmpeg

出力形式

ファイル形式 拡張子 圧縮形式 必要ツール
fuze .fuz
xwma .xwm
wave .wav
mp3 .mp3 LAME または FFmpeg
ogg .ogg/.oga flac/opus/speex/vorbis FFmpeg
flac .fla/.flac FFmpeg
aiff .aif/.aiff FFmpeg

対応表

入力→
↓出力
fuz(*1) xwm wav mp3 一般音声/動画形式(*3)
fuz(*2) - o o o (LAME or FFmpeg) o (FFmpeg)
xwm o - o o (LAME or FFmpeg) o (FFmpeg)
wav o o - o (LAME or FFmpeg) o (FFmpeg)
mp3 o (LAME or FFmpeg) o (LAME or FFmpeg) o (LAME or FFmpeg) - o (FFmpeg)
ogg o (FFmpeg) o (FFmpeg) o (FFmpeg) o (FFmpeg) o (FFmpeg)
flac o (FFmpeg) o (FFmpeg) o (FFmpeg) o (FFmpeg) o (FFmpeg)
aiff o (FFmpeg) o (FFmpeg) o (FFmpeg) o (FFmpeg) o (FFmpeg)

(*1) fuz含まれているlipが解凍可能
(*2) 入力ファイルと同じ場所に同名のlipファイルがある場合、lipファイルを含めることも可能
(*3) 対応形式:mp3/mp4/ogg/flac/aiff/wma, asf/avi/flv/mov/mp4/mpeg/ogg/web-m/wmv

変換の流れ

  f:id:thinkingskeever:20160203211416p:plain




f:id:thinkingskeever:20151114030550p:plain

5. 必要条件

動作環境

オプション(取り扱い音声形式の拡張に必要)

LAME 3.99.5以上(http://lame.sourceforge.net/

必須ではないですが、mp3ファイルを扱うのに必要です。
コンパイル済み実行ファイルはRAREWARESからダウンロードできます。
32bit版と64bit版のどちらでも構いません。お使いのOSに合わせて選んでください。

FFmpeg 2.8.5以上(http://ffmpeg.org/

必須ではないですが、mp3, ogg, wmv, mp4などの音声/動画ファイルを扱うのに必要です。
コンパイル済み実行ファイルはZeranoe FFmpegからダウンロードできます。
32-bit static version、64-bit static versionのどちらでも構いません。お使いのOSに合わせて選んでください。
FFmpegをインストールする場合、LAMEは必須ではありません。mp3のエンコードオプションはLAMEのほうが多いので、必要に応じて使い分けてください。




f:id:thinkingskeever:20151114030550p:plain

6. インストール方法

  • 次のページからZIPファイルをダウンロードします。
  • ZIPファイルを解凍し、YakitoriAudioConverterフォルダーごと任意のフォルダにコピーします。ゲームのフォルダ、Mod Organizer/NMMのフォルダ、Program Filesフォルダは避けてください。良く分からなければデスクトップ上でも問題ありません。
  • オプションの外部ツール(lame.exe, ffmpeg.exe)をインストールフォルダにコピーします。
  • 旧バージョンからのアップデート時には、単純にファイルを上書きコピーしてください。
    ※v1.4ではインストールフォルダの構成が変更されていますので、空のフォルダにコピーしてください。



f:id:thinkingskeever:20151114030550p:plain

7. アンインストール方法

アンインストールする場合、インストールしたYakitoriAudioConverterフォルダごと削除してください。レジストリは使っていませんのでクリーニングの必要はありません(厳密にはWindows.NET Frameworkによって少量のレジストリが作られているかもしれませんが、誤差の範囲だと思います)。




f:id:thinkingskeever:20151114030550p:plain

8. 使い方

変換の手順

  f:id:thinkingskeever:20160202190315p:plain

  1. YakitoriAudioConverter.exeを起動します。
  2. 入力形式を選びます。
  3. 「ファイル」メニューまたはドラッグ&ドロップで変換するファイルを追加します。
  4. チェックボックスで変換するファイルを選びます。
  5. 出力形式を選びます。
  6. 出力フォルダを選びます。
  7. (オプション)エンコーダ/デコーダの設定を変更します。表示されるオプションは入力形式/出力形式に依存します。良く分からなければデフォルトのままで構いません。
  8. 「変換」ボタンを押して変換を開始します。
  9. 変換が完了すると、ファイル一覧は変換結果によって分類表示されます。変換エラーが起こった場合、ログにエラーメッセージが表示されます。ファイルを右クリックして「ファイル状態の表示」メニューを選んで、ファイル毎のエラーを確認することもできます。

ショートカットキーと便利な使い方

メインウィンドウ
操作 説明
Ctrl+O ファイルを開く
Ctrl+L フォルダを開く
F5 変換
ファイル一覧
操作 説明
DEL 選択行の削除
Ctrl+A すべての行を選択
Ctrl+C ファイル名のコピー
Ctrl+G グループ表示の切り替え
Alt+Up 前のグループにジャンプ
Alt+Down 次のグループにジャンプ
Shift+クリック 範囲選択
余白をドラッグ 範囲選択
グループ名のクリック グループ中のファイルをすべて選択
グループ名のダブルクリック グループの折りたたみ/展開
範囲選択されたチェックボックスのクリック 選択されたファイルすべてをチェック/チェック解除
列ヘッダのクリック ソート列の選択/ソート方向の切り替え
マウスカーソルをファイル名上に ツールチップでファイル名を表示
マウスカーソルをステータス上に ツールチップで詳細情報を表示(エラーメッセージ、作成したファイルなど)
右クリック メニューの表示
ファイルをダブルクリック 入力ファイルを開く
状態列の「変換済み」をダブルクリック 出力ファイルを開く
オプションウィンドウ
操作 説明
マウスカーソルを入力形式/出力形式上に ツールチップで拡張子を表示
ログウィンドウ
操作 説明
Ctrl+A すべて選択
Ctrl+C コピー
右クリック メニューの表示
ステータスバー
操作 説明
グループ名のクリック グループにジャンプ



f:id:thinkingskeever:20151114030550p:plain

9. 注意点・制限事項・トラブルシュート

  • きっとバグがあります。必ず変換元ファイルのバックアップを取ってください。
  • 変換の(音質的な)結果は外部のツールに依存します。変換エラー時には、エラーメッセージに含まれる外部コマンドのエラーメッセージを参照願います。
  • ログの行数が大量になると性能に悪影響があります。定期的にクリアしてください。
  • ListView、特にGrouping機能はとても遅くてバグが多いので出来る限り調整とチューニングを行いました。もしファイル一覧が再描画されなくなったら、ヘルプメニューからバージョン情報ダイアログ。これで状態がリセットされます。頻繁に起こるようであれば報告してください。
  • 変換したファイルを個人で楽しむのは自由ですが、他の人に公開したり配布する場合、元の音楽・動画の著作権に配慮してください。


xwmエンコード時のエラー "エラー: サウンドファイルの変換に失敗しました。 外部コマンド xWMAEncode.exe でエラーが発生しました。終了コード: -2147221501"
ファイルサイズがxWMAEncoderの処理上限を超えているときに起こるようです。BGMなどの大きな音声ファイルを扱うときに起こりやすいです。音声ファイルのサンプリング周波数とxWMAEncoderのビットレートを下げて対処できます。手順は次のとおりです。

  1. (WAVファイルから変換している場合は一度AIF形式に変換する)
  2. 入力形式「音声ファイル (ffmpeg)」を選ぶ
  3. ffmpeg汎用音声デコーダー」の設定で、サンプリング周波数を22.05KHzに変更する
  4. 「xWMAEncode xwmエンコーダー」の設定で、ビットレートを 32kbps に変更する
  5. 変換する
  6. うまくいかない場合、サンプリング周波数とビットレートを下げてみる。2つには有効な組み合わせがあるので注意

xwmデコード時のエラー "エラー: サウンドファイルの変換に失敗しました。 外部コマンド xWMAEncode.exe でエラーが発生しました。終了コード: -2147024809 ... ERROR: Input file type is neither PCM nor xWMA"
おそらくゲーム機用のfuz(xwm)形式です。本ツールでは取り扱えません。

xwmデコード時のエラー "エラー: サウンドファイルの変換に失敗しました。 外部コマンド xWMAEncode.exe でエラーが発生しました。終了コード: -2003238911 ... ERROR: Requested audio format unsupported: format tag must be WAVE_FORMAT_PCM or WAVE_FORMAT_IEEE_FLOAT"
おそらくゲーム機用のfuz(xwm)形式です。本ツールでは取り扱えません。

xwmエンコード時のエラー "エラー: サウンドファイルの変換に失敗しました。 外部コマンド xWMAEncode.exe でエラーが発生しました。終了コード: -2147467263 ... failed with error E_NOTIMPL (Not implemented)"
サポートされない入力音声ファイルのサンプリング周波数とxwmのビットレートの組み合わせです。xWMAEncodeは次の組み合わせをサポートしています。

サンプリング周波数 ビットレート
22050Hz mono 20000
22050Hz stereo 32000
32000Hz mono 20000
32000Hz stereo 32000, 48000
44100Hz mono 32000, 48000
44100Hz stereo 32000, 48000, 96000, 192000
44100Hz 5.1 96000, 192000
48000Hz stereo 48000, 64000, 96000, 160000, 192000
48000Hz 5.1 48000, 192000

入力音声のサンプリング周波数はエラーメッセージ中に表示されます。例:FAILED to encode 21164032 bytes of 22kPcm16BitStereo data to xWMA (bitrate 48000)
この例ではサンプリング周波数22kHz、ビットレート48kbpsという無効な組み合わせですので、ビットレートを32kbpsに変更するか、入力音声のサンプリング周波数を32kHz/44.1kHz/48kHzに変更します。


f:id:thinkingskeever:20151114030550p:plain

10. クレジットと謝辞

== 使用ライブラリ/外部ツール ==

LZ4 for .NET [url=https://github.com/IonKiwi/lz4.net]https://github.com/IonKiwi/lz4.net[/url]
Copyright(c) 2016, IonKiwi
Copyright(c) 2011-2014, Yann Collet, All rights reserved.

Microsoft (R) xWMA Encoding Tool Copyright (C) 2009 Microsoft Corporation. All rights reserved.


== 謝辞 ==

JonB氏と彼のSkyrim Audio Converter
  彼のツールは本ツール開発の大きな動機となりました。本当にありがとう。
Unofficial Elder Scrolls Pages http://www.uesp.net/wiki/
  ここで公開されているMOD形式ページは大きな助けとなりました。
AFK Mods forum https://afkmods.iguanadons.net/
  MODファイル形式に関するフォーラムの議論は大きな助けとなりました。
それと、モッディングコミュニティ、NexusMods、ベゼスダ、そして利用してくれたあなたに感謝します。


== 開発ツール ==
Microsoft Visual C# 2015
GIMP
LibreOffice




f:id:thinkingskeever:20151114030550p:plain

11. ツールの変更履歴

v1.0 (2016/2/1)

  • 初回リリース

v1.0.1 (2016/2/1)

  • FFmpegで変換するとき音量調節できるようにした。

v1.1 (2016/2/2)

  • mod名称を「Yet Another Audio Converter」から「Yakitori Audio Converter」に変更しました。既に同じ名前のツールが世の中にあることに気付いたので、混乱を避けるためです。次の名前を考えていたときちょうど焼き鳥を食べていたのでこの名前にしました。
  • 音量リストの項目追加。少し細かく音量調整できます。
  • LAMEFFmpegのための追加引数のテキストボックスの追加。コマンド引数の知識があれば、LAMEFFmpegのコマンド引数を自由に追加できます。FFmpegでは2種類の追加引数が指定できます。「追加の引数」は(FFmpegの)入力ファイルに対する引数で、「追加の引数 2」は(FFmpegの)出力ファイルに対する引数です。使い分けに注意してください。

v1.2 (2016/2/3)

  • FFmpegがインストールされている場合、一般的な動画ファイル形式 (avi, flv, mpg, mp4など)からの変換ができます。あまりテストしていませんし、変換の成否はFFmpegの仕様次第ですが、手持ちのファイル(flv,mp4,wmv)での変換結果は良好でした。問題がある場合は追加引数を設定してください。
  • 設定はすべてiniファイルに保存され、次回起動時に引き継がれます。
  • (バグ修正) ファイル名に連続した空白文字があるとき、外部コマンドが"No such file or directory"エラーとなる問題を修正しました。
  • (バグ修正) UI言語切り替え時の動作改善

v1.3 (2016/2/4)

  • ファイル一覧の右クリックメニューから入力/出力ファイル、入力/出力フォルダ、bsaファイルを開けます。入力ファイルがbsaファイル中にある場合は即席で解凍して開きます。fuzファイルの場合、即席でxwmファイルを解凍して開きます。
  • ファイル一覧でファイルをダブルクリックすると入力ファイルを開けます。状態列の「変換済み」をダブルクリックすると出力ファイルを開けます。
  • (変更) ヘルプメニューから開けるコマンドヘルプのテキストファイル名を意味のある名前にした。
  • (変更) エラーメッセージの改善とローカライズ
  • (変更) エラーメッセージの簡素化。スタックトレース情報はオプショナルとなり、オプションメニューで切り替えられます。
  • (バグ修正) ファイル一覧でチェックボックスを右クリックしたとき、ファイル一覧が再描画されなくなる問題を修正した。
  • (バグ修正) 「ヘルプ」-「バージョン情報」ダイアログを表示したとき、ファイル一覧の再描画問題が正しくリセットされるようにした。

Version 1.4 (2018/6/4)

本バージョンは古いバージョンのフォルダに上書きせず、新しいフォルダにインストールしてください。
機能追加:

  • FO4のBA2形式/Skyrim SEの形式のサポート
  • 出力フォルダの履歴の追加:以前に使った出力フォルダを呼び出せます(最大10個)
  • ファイルの状態ダイアログ:ツールに追加された各ファイルの状態を確認できます。特にエラーメッセージや出力されたファイルの確認に便利です。ファイルの右クリックメニューから表示できます。

変更:

  • 開発効率向上/バグ回避のため、前提となる.NET Frameworkのバージョンを4.0から4.6.1に変更しました。
  • xWMAEncodeをバンドルしました。
  • オプションパネルをスクロール可能に。変換オプションパネルが画面に収まらなくてもスクロールできます。
  • 「サブフォルダの作成」オプション:フォルダまたはBSAから追加したファイルの場合、出力先フォルダにサブフォルダを作成します。「サブフォルダ」は開いたフォルダまたはBSAのパスを基準に決定されるため、個別のファイルを追加した場合は機能しません。
  • 変換キャンセル動作の改善。ffmpegなどの外部ツール実行中でも即座にキャンセルできます。
  • 動画形式からmp3等の各種音声形式への変換、wavファイル以外の音声形式間の変換ができるようになりました。
  • インストールファイル構成の変更
  • その他改善

バグ修正:

  • 誤字の訂正
  • BSA中のファイル名に含まれる特殊文字が正しく処理されないバグの修正。BSA中にはコードページ1252の文字が含まれているものと仮定して処理します。
  • その他細かなバグ修正

f:id:thinkingskeever:20151114030550p:plain

本ガイドの改訂履歴

  • 2016/02/02 19:20 - 公開開始。v1.1対応
  • 2016/02/03 21:22 - v1.2対応
  • 2016/02/04 18:20 - v1.3対応
  • 2018/06/05 19:00 - v1.4対応

以上

Copyright (C) 2015,2017 ThinkingSkeever, All Rights Reserved.
ブログの記事内に記載されているメーカー名、製品名称等は、日本及びその他の国における各企業の商標または登録商標です。
リンクはご自由に。記事の転載はご遠慮ください。記事を引用する場合はトラックバックするか元のURLを明記してください。