voisona Talk等で出力された音声ファイルの名前を、同名のセリフを含むテキストファイルを参照して変換するツールをRustで書いてみたのでそれの紹介です。ほとんどREADMEのコピペかも。
ソースコードは今見ても綺麗とは言えないですが動作はちゃんとしてます。
Lates Release
このツールの概要と必要性
track2lineは、voisona talkなどで書き出した音声ファイルがTalk1_1.wav
のようにトラック番号がファイル名になっており、内容が分かりにくかったため、ファイル名をその音声のセリフにしたいと考えたため制作しました。
これにはセリフが含まれる音声ファイルと同名のテキストファイルが必要です。それを自動で参照してリネームしていきます。
vt_test
├── Talk1_1.txt
└── Talk1_1.wav
$cat Talk1_1.txt
これはテストです
👆のようなファイルがあった際にtrack2lineを実行すると👇のようになります。
# コマンドか何かで実行
* 1.mp3 ---> one.mp3
ok?(y/n)>y
success.
├──renamed
│ ├── one.wav # 1.txtの中身を参照してone.wavに
├── 1.txt # テキストファイル
├── bad.txt # エラー判定用
ちなみに、セリフをファイルを出力するにはテキストファイルを含む的な項目にチェックを入れると同じディレクトリにセリフを含んだテキストファイルを書き出してくれます。
インストール
実行ファイルを置く場所をパスに通すとどこからでも使えます。
一例としてmac + zshで
echo export PATH=$PATH:ユーザディレクトリに適当なフォルダ(my_toolsなど)のフルパス >> ~/.zshrc
source ~/.zshrc
もしくは、実行ファイルのパスをエイリアスに登録すると、フルパスで実行ファイルを指定しなくとも使用できるようになります。(Mac)
- 適当なフォルダに実行ファイルを置く
- その実行ファイルのパスをaliasに設定
echo "alias track2line='track2lineのフルパス'" >> ~/.zshrc;
source ~/.zshrc;
使い方
READMEを結構ちゃんと書いたのでほとんどそれのコピペになります
使い方
実行方法は
- 引数にパスを指定 👉 引数にパスを指定
- 実行後にパスを指定
- 引数ではなく実行後にパスを入力 👉 引数ではなく実行後にパスを入力
- 実行ファイルのディレクトリを自動取得 👉 実行ファイルのディレクトリを自動取得
の3種類.
以下コードの実行に用いたテスト用のディレクトリ構造
> tree tests
tests
├── 1.txt # テキストファイル
├── 1.wav # 音声ファイル
├── bad.txt # エラー判定用
> cat 1.txt
one # テキストファイルの内容
引数にパスを指定
> ./track2line ~/Desktop/tests
* 1.wav ---> one.wav
ok?(y/n)>y
success.
引数に指定する場合には対応する拡張子を変更できます
*この例ではそれぞれのファイルの拡張子をmp3とrtfに変更しています.
> ./track2line -a mp3 -t rtf ~/Desktop/tests
* 1.mp3 ---> one.mp3
ok?(y/n)>y
success.
引数ではなく実行後にパスを入力
実行ファイルをダブルクリックして入力を求めらた際にフォルダのパスを入力.
> ~/Develop/track2line/target/release/track2line ; exit;
input Rust's Project folder path.
if you use current directory, just leave it blank.
>>~/Desktop/tests # 👈パスを入力.
* 1.wav ---> one.wav
ok?(y/n)>y
success.
実行ファイルのディレクトリを自動取得
> ~/Desktop/tests/track2line ; exit; # 👈実行ファイルのパスを指定して実行してます.
input Rust's Project folder path.
if you use current directory, just leave it blank.
>> # 👈パスを入力しなければ実行ファイルのパスが自動で入力されます.
* 1.wav ---> one.wav
ok?(y/n)>y
success.
免責事項
このソフトウェアを使用したことによって生じたすべての障害・損害・不具合等に関しては、私と私の関係者および私の所属するいかなる団体・組織とも、一切の責任を負いません。各自の責任においてご使用ください。