okiba

その他

Whisperに素材の切り分けとかを手伝ってもらうツール

この記事は音MAD Advent Calendar 2023に参加しています。 adventar.org

はじめに

ここ最近はAIというやつが発達していて、音声素材を切り分ける作業ではそれなりに楽ができるんじゃないかなという気がしていたのでいくつかツールを作ってみました。 下記のリンクは昨年の音MAD Advent CalendarでE-tumさんが書かれたWhisperをGoogle Colab上で動かして素材の切り分けを自動化させていた応用例です。 e-tum.hatenablog.com 今回のツールは同様にWhisperを中核に据えつつ、GUIをつけてローカルで動くようにしたものたちです。 (こういうの作るのはじめてなのでいろいろ大目に見てください)

github.com

上記のリンクから画像の4つをダウンロードしてください。

7zは展開してCドライブ直下など適当な場所に配置してください。

TranscriptionRenamer.exe

文字通り、音声ファイルの内容を書き起こしてファイル名をリネームするツールです。 切り分け自体はREAPERのDynamic Splitで概ね精度良くできるけど、ファイル名をつけるのが面倒な場合にBatchで出力してリネームするというような使い方をすると便利かと思います。

positiveallergy.blog50.fc2.com

taiuo443.hatenablog.com

使い方

基本的には上部リスト部分へ音声ファイルをD&Dするか、Add Audio Fileボタンから追加して、Goボタンを押すだけです。

Mode

  • Add (post)
    • オリジナルのファイル名の後ろに書き起こした内容を追加する形でリネームします。
  • Add(pre)
    • 同様に書き起こした内容を前に追加する形でリネームします。
  • Rename
    • オリジナルのファイル名を破棄して書き起こした内容でリネームします。
  • Replace
    • オリジナルのファイル名の特定の文字列を書き起こした内容で置き換えます。
    • 例えば、「A-item-01.wav」 というファイル名の場合に「item」を指定すると「A-書き起こし内容-01.wav」という形でリネームされます。

Device

書き起こしに使うデバイスを指定します。デフォルトではAutoとなっていて、GPU(CUDA)が使える環境であれば優先的にGPUが使われ、そうでなければCPUが使われます。 GPUの方が断然処理速度が早いので、GPUに負荷をかけたくないという場合にCPUを使ってください。

Num Workers

並列処理数。tinyみたいな軽いモデルで数百の音声ファイルを処理したい、みたいな特殊なケースで無い限り並列処理しても処理速度は上がらないので基本的には1でよいです。

Model

Whisperのモデルを指定します。 tinyなど小さくなるほど高速に処理されますが、書き起こし精度は下がります。 最新のlarge-v3が精度がもっとも良いそうですが、体感あんまり良くなった感じがしなかったのでmediumをとりあえずデフォルトとしてます。

Beam Size

書き起こしの精度。Whisperでは5がデフォルトだけど、2まで減らしてもそれほど精度が変わらなかったのでここではそれをデフォルト値としています。なんか結果が微妙だなと思ったら上げると改善するかもしれません。(多分しないし、モデルの選択やInitial Promptの方が結果に与える影響は大きい気がします)

Initial Prompt

Whisperに渡すInitial Promptを指定します。Initial Promptとは書き起こし内容を誘導するキーワードみたいなものです。 しょっちゅう書き起こし間違える名詞や、固有名詞、それらを包括するようなキーワードなどをここに入力するといい感じに正しく書き起こしてくれるかもしれません。出てくる固有名詞をあらかじめバンバン入れておけば語彙を増やせて対応できるかというとたしかInitial Promptにはtoken上限があって、そういう使い方は難しかった気がします。

Initial Promptなし
Initial Prompt:写生
上の結果からもわかるようにInitial Promptを指定したことでそれにひっぱられて悪影響がでることがあるので注意。

Whisper2json.exe

切り分けすらも面倒だからWhisperにやらせて楽したいが、精度が低いのはイヤだから最終的には自分で微調整したいという場合に便利なツールです。

実際に書き起こし内容をタイムスタンプつけてjsonにするのはwhisper-standalone-winがやってくれているので、このプログラムではそのタイムスタンプをいろんな手段で補正してなるべく使い物になるようにしてます。 話者推定については男女ダウナーアッパーくらいの声の調子は分離できますが、それ以上の精度はいまのところ難しそうでした。

使い方

Add Audio Fileで音声ファイルを追加してGoボタンを押せば音声ファイルと同じディレクトリに同じ名前でjsonファイルが出力されます。UVRを通したような低ノイズの音声のほうが結果は良くなります。

ultimatevocalremover.com

REAPER側でjson2reaper.luaを実行する。

Actions>Show action list...からLoad ReaScript…してダウンロードしたjson2reaper.luaを読み込ませてアクションリストからjson2reaper.luaを実行します。

luaスクリプトを実行するとjsonファイルを選択するダイアログが表示されるので、出力されたjsonを読み込みます。

するとこんな感じにアイテム名にセリフをつけて、推定された話者ごとのトラックに並べてくれます。ここから手作業でトラック割り当てを正しい位置にしたり、発話区間を手作業で調整したりしてあとはBatch出力すればスターターセットの完成。

以下はパラメーターの簡単な説明。

Save Segments

認識した音声セグメントごとに単体のWAVファイルとして出力します。 ファイルパスを設定しなければ、読み込んだWAVと同じ位置に出力されます。

No Diarization

チェックを入れると話者推定をしません。話者推定をしないと発話区間を推定しない関係で後述のResegmentは機能しません。

Resegment

Whisperが出力してくるタイムスタンプは結構ガバガバなので、これを話者推定した時に得られるタイムスタンプで補正します。 Whisperタイムスタンプから見てセグメントを広げる方向にMarginの範囲内で話者推定タイムスタンプが見つかればそれに設定します。

Smooth Transition

Whisperは音のあるところでタイムスタンプを打ってブツ切り状態にしてくることが多々あるので、これを緩和するために無音部分をMarginの範囲内で探してセグメントを広げる方向にタイムスタンプを打ち直します。

Trim Silence

Whisperは何も喋ってない余白にタイムスタンプを打ってくることが多々あるのでセグメントの前後の無音部分を切り取ります。Addでそれに余白をもたせることができます。

Minimum Length

Whisperは長さ0のタイムスタンプを打ってくることが多々あるので、REAPER上で見つけやすいように短すぎるセグメントを延長する形で伸ばします。

Whisper Custom Args

whisper-faster.exeに渡すオプションを指定できます。これを--model=large-v3などに編集すると最新のlarge-v3モデルが使えますが試した限りタイムスタンプの精度は相変わらずガバガバで微妙。mediumで十分な気がしますが、結果が変な感じになってたら試しに他のモデルを使ってみてください。 --helpで出てくるヘルプを下にコピペしたので詳しくはそれを参照してください。

--help

usage: whisper-faster.exe [-h] [--model MODEL] [--model_dir MODEL_DIR] [--device DEVICE] [--output_dir OUTPUT_DIR]
                          [--output_format {lrc,txt,text,vtt,srt,tsv,json,all}] [--verbose VERBOSE]
                          [--task {transcribe,translate}]
                          [--language {af,am,ar,as,az,ba,be,bg,bn,bo,br,bs,ca,cs,cy,da,de,el,en,es,et,eu,fa,fi,fo,fr,gl,gu,ha,haw,he,hi,hr,ht,hu,hy,id,is,it,ja,jw,ka,kk,km,kn,ko,la,lb,ln,lo,lt,lv,mg,mi,mk,ml,mn,mr,ms,mt,my,ne,nl,nn,no,oc,pa,pl,ps,pt,ro,ru,sa,sd,si,sk,sl,sn,so,sq,sr,su,sv,sw,ta,te,tg,th,tk,tl,tr,tt,uk,ur,uz,vi,yi,yo,yue,zh,Afrikaans,Albanian,Amharic,Arabic,Armenian,Assamese,Azerbaijani,Bashkir,Basque,Belarusian,Bengali,Bosnian,Breton,Bulgarian,Burmese,Cantonese,Castilian,Catalan,Chinese,Croatian,Czech,Danish,Dutch,English,Estonian,Faroese,Finnish,Flemish,French,Galician,Georgian,German,Greek,Gujarati,Haitian,Haitian Creole,Hausa,Hawaiian,Hebrew,Hindi,Hungarian,Icelandic,Indonesian,Italian,Japanese,Javanese,Kannada,Kazakh,Khmer,Korean,Lao,Latin,Latvian,Letzeburgesch,Lingala,Lithuanian,Luxembourgish,Macedonian,Malagasy,Malay,Malayalam,Maltese,Mandarin,Maori,Marathi,Moldavian,Moldovan,Mongolian,Myanmar,Nepali,Norwegian,Nynorsk,Occitan,Panjabi,Pashto,Persian,Polish,Portuguese,Punjabi,Pushto,Romanian,Russian,Sanskrit,Serbian,Shona,Sindhi,Sinhala,Sinhalese,Slovak,Slovenian,Somali,Spanish,Sundanese,Swahili,Swedish,Tagalog,Tajik,Tamil,Tatar,Telugu,Thai,Tibetan,Turkish,Turkmen,Ukrainian,Urdu,Uzbek,Valencian,Vietnamese,Welsh,Yiddish,Yoruba}]
                          [--temperature TEMPERATURE] [--best_of BEST_OF] [--beam_size BEAM_SIZE]
                          [--patience PATIENCE] [--length_penalty LENGTH_PENALTY]
                          [--repetition_penalty REPETITION_PENALTY] [--no_repeat_ngram_size NO_REPEAT_NGRAM_SIZE]
                          [--suppress_blank SUPPRESS_BLANK] [--suppress_tokens SUPPRESS_TOKENS]
                          [--initial_prompt INITIAL_PROMPT] [--prefix PREFIX]
                          [--condition_on_previous_text CONDITION_ON_PREVIOUS_TEXT]
                          [--prompt_reset_on_temperature PROMPT_RESET_ON_TEMPERATURE]
                          [--without_timestamps WITHOUT_TIMESTAMPS] [--max_initial_timestamp MAX_INITIAL_TIMESTAMP]
                          [--temperature_increment_on_fallback TEMPERATURE_INCREMENT_ON_FALLBACK]
                          [--compression_ratio_threshold COMPRESSION_RATIO_THRESHOLD]
                          [--logprob_threshold LOGPROB_THRESHOLD] [--no_speech_threshold NO_SPEECH_THRESHOLD]
                          [--no_speech_strict_lvl {0,1,2}] [--word_timestamps WORD_TIMESTAMPS]
                          [--highlight_words HIGHLIGHT_WORDS] [--prepend_punctuations PREPEND_PUNCTUATIONS]
                          [--append_punctuations APPEND_PUNCTUATIONS] [--threads THREADS] [--version]
                          [--vad_filter VAD_FILTER] [--vad_threshold VAD_THRESHOLD]
                          [--vad_min_speech_duration_ms VAD_MIN_SPEECH_DURATION_MS]
                          [--vad_max_speech_duration_s VAD_MAX_SPEECH_DURATION_S]
                          [--vad_min_silence_duration_ms VAD_MIN_SILENCE_DURATION_MS]
                          [--vad_speech_pad_ms VAD_SPEECH_PAD_MS] [--vad_window_size_samples VAD_WINDOW_SIZE_SAMPLES]
                          [--compute_type {default,auto,int8,int8_float16,int8_float32,int8_bfloat16,int16,float16,float32,bfloat16}]
                          [--batch_recursive] [--beep_off] [--skip] [--checkcuda] [--print_progress] [--postfix]
                          [--check_files] [--PR163_off] [--hallucinations_list_off] [--one_word {0,1,2}] [--sentence]
                          [--standard] [--standard_asia] [--max_comma MAX_COMMA]
                          [--max_comma_cent {50,60,70,80,90,100}] [--max_gap MAX_GAP]
                          [--max_line_width MAX_LINE_WIDTH] [--max_line_count MAX_LINE_COUNT]
                          [--min_dist_to_end {0,4,5,6,7,8,9,10,11,12}] [--prompt_max {16,32,64,128,223}]
                          [--reprompt {0,1,2}] [--prompt_reset_on_no_end PROMPT_RESET_ON_NO_END]
                          audio [audio ...]

positional arguments:
  audio                 audio file(s). You can enter a file wildcard, filelist (txt. m3u, m3u8, lst) or directory to
                        do batch processing. Note: non-media files in list or directory are filtered out by extension.

optional arguments:
  -h, --help            show this help message and exit
  --model MODEL, -m MODEL
                        name of the Whisper model to use (default: medium)
  --model_dir MODEL_DIR
                        the path to save model files; by default (default: None)
  --device DEVICE, -d DEVICE
                        Device to use. Default is 'cuda' if CUDA device is detected, else is 'cpu'. If CUDA GPU is a
                        second device then set 'cuda:1'. (default: cuda)
  --output_dir OUTPUT_DIR, -o OUTPUT_DIR
                        directory to save the outputs. By default the same folder where the executable file is or
                        where media file is if --batch_recursive=True. '.'- sets to the current folder. 'source' -
                        sets to where media file is. (default: default)
  --output_format {lrc,txt,text,vtt,srt,tsv,json,all}, -f {lrc,txt,text,vtt,srt,tsv,json,all}
                        format of the output file; if not specified srt will be produced (default: srt)
  --verbose VERBOSE, -v VERBOSE
                        whether to print out debug messages (default: False)
  --task {transcribe,translate}
                        whether to perform X->X speech recognition ('transcribe') or X->English translation
                        ('translate') (default: transcribe)
  --language {af,am,ar,as,az,ba,be,bg,bn,bo,br,bs,ca,cs,cy,da,de,el,en,es,et,eu,fa,fi,fo,fr,gl,gu,ha,haw,he,hi,hr,ht,hu,hy,id,is,it,ja,jw,ka,kk,km,kn,ko,la,lb,ln,lo,lt,lv,mg,mi,mk,ml,mn,mr,ms,mt,my,ne,nl,nn,no,oc,pa,pl,ps,pt,ro,ru,sa,sd,si,sk,sl,sn,so,sq,sr,su,sv,sw,ta,te,tg,th,tk,tl,tr,tt,uk,ur,uz,vi,yi,yo,yue,zh,Afrikaans,Albanian,Amharic,Arabic,Armenian,Assamese,Azerbaijani,Bashkir,Basque,Belarusian,Bengali,Bosnian,Breton,Bulgarian,Burmese,Cantonese,Castilian,Catalan,Chinese,Croatian,Czech,Danish,Dutch,English,Estonian,Faroese,Finnish,Flemish,French,Galician,Georgian,German,Greek,Gujarati,Haitian,Haitian Creole,Hausa,Hawaiian,Hebrew,Hindi,Hungarian,Icelandic,Indonesian,Italian,Japanese,Javanese,Kannada,Kazakh,Khmer,Korean,Lao,Latin,Latvian,Letzeburgesch,Lingala,Lithuanian,Luxembourgish,Macedonian,Malagasy,Malay,Malayalam,Maltese,Mandarin,Maori,Marathi,Moldavian,Moldovan,Mongolian,Myanmar,Nepali,Norwegian,Nynorsk,Occitan,Panjabi,Pashto,Persian,Polish,Portuguese,Punjabi,Pushto,Romanian,Russian,Sanskrit,Serbian,Shona,Sindhi,Sinhala,Sinhalese,Slovak,Slovenian,Somali,Spanish,Sundanese,Swahili,Swedish,Tagalog,Tajik,Tamil,Tatar,Telugu,Thai,Tibetan,Turkish,Turkmen,Ukrainian,Urdu,Uzbek,Valencian,Vietnamese,Welsh,Yiddish,Yoruba}, -l {af,am,ar,as,az,ba,be,bg,bn,bo,br,bs,ca,cs,cy,da,de,el,en,es,et,eu,fa,fi,fo,fr,gl,gu,ha,haw,he,hi,hr,ht,hu,hy,id,is,it,ja,jw,ka,kk,km,kn,ko,la,lb,ln,lo,lt,lv,mg,mi,mk,ml,mn,mr,ms,mt,my,ne,nl,nn,no,oc,pa,pl,ps,pt,ro,ru,sa,sd,si,sk,sl,sn,so,sq,sr,su,sv,sw,ta,te,tg,th,tk,tl,tr,tt,uk,ur,uz,vi,yi,yo,yue,zh,Afrikaans,Albanian,Amharic,Arabic,Armenian,Assamese,Azerbaijani,Bashkir,Basque,Belarusian,Bengali,Bosnian,Breton,Bulgarian,Burmese,Cantonese,Castilian,Catalan,Chinese,Croatian,Czech,Danish,Dutch,English,Estonian,Faroese,Finnish,Flemish,French,Galician,Georgian,German,Greek,Gujarati,Haitian,Haitian Creole,Hausa,Hawaiian,Hebrew,Hindi,Hungarian,Icelandic,Indonesian,Italian,Japanese,Javanese,Kannada,Kazakh,Khmer,Korean,Lao,Latin,Latvian,Letzeburgesch,Lingala,Lithuanian,Luxembourgish,Macedonian,Malagasy,Malay,Malayalam,Maltese,Mandarin,Maori,Marathi,Moldavian,Moldovan,Mongolian,Myanmar,Nepali,Norwegian,Nynorsk,Occitan,Panjabi,Pashto,Persian,Polish,Portuguese,Punjabi,Pushto,Romanian,Russian,Sanskrit,Serbian,Shona,Sindhi,Sinhala,Sinhalese,Slovak,Slovenian,Somali,Spanish,Sundanese,Swahili,Swedish,Tagalog,Tajik,Tamil,Tatar,Telugu,Thai,Tibetan,Turkish,Turkmen,Ukrainian,Urdu,Uzbek,Valencian,Vietnamese,Welsh,Yiddish,Yoruba}
                        language spoken in the audio, specify None to perform language detection (default: None)
  --temperature TEMPERATURE
                        temperature to use for sampling (default: 0)
  --best_of BEST_OF, -bo BEST_OF
                        number of candidates when sampling with non-zero temperature (default: 5)
  --beam_size BEAM_SIZE, -bs BEAM_SIZE
                        number of beams in beam search, only applicable when temperature is zero (default: 5)
  --patience PATIENCE, -p PATIENCE
                        optional patience value to use in beam decoding, as in https://arxiv.org/abs/2204.05424, the
                        default (1.0) is equivalent to conventional beam search (default: 1.0)
  --length_penalty LENGTH_PENALTY
                        optional token length penalty coefficient (alpha) as in https://arxiv.org/abs/1609.08144, uses
                        simple length normalization by default (default: 1.0)
  --repetition_penalty REPETITION_PENALTY
                        Penalty applied to the score of previously generated tokens (set > 1.0 to penalize). (default:
                        1.0)
  --no_repeat_ngram_size NO_REPEAT_NGRAM_SIZE
                        Prevent repetitions of ngrams with this size (set 0 to disable). (default: 0)
  --suppress_blank SUPPRESS_BLANK
                        Suppress blank outputs at the beginning of the sampling. (default: True)
  --suppress_tokens SUPPRESS_TOKENS
                        comma-separated list of token ids to suppress during sampling; '-1' will suppress most special
                        characters except common punctuations (default: -1)
  --initial_prompt INITIAL_PROMPT, -prompt INITIAL_PROMPT
                        optional text to provide context as a prompt for the first window. Use 'None' to disable it.
                        Note: 'auto' and 'default' are experimental ~universal prompt presets, they work if --language
                        is set. (default: default)
  --prefix PREFIX       Optional text to provide as a prefix for the first window (default: None)
  --condition_on_previous_text CONDITION_ON_PREVIOUS_TEXT
                        if True, provide the previous output of the model as a prompt for the next window; disabling
                        may make the text inconsistent across windows, but the model becomes less prone to getting
                        stuck in a failure loop (default: True)
  --prompt_reset_on_temperature PROMPT_RESET_ON_TEMPERATURE
                        Resets prompt if temperature is above this value. Arg has effect only if
                        condition_on_previous_text is True. (default: 0.5)
  --without_timestamps WITHOUT_TIMESTAMPS
                        Only sample text tokens. (default: False)
  --max_initial_timestamp MAX_INITIAL_TIMESTAMP
                        The initial timestamp cannot be later than this. (default: 1.0)
  --temperature_increment_on_fallback TEMPERATURE_INCREMENT_ON_FALLBACK, -fallback TEMPERATURE_INCREMENT_ON_FALLBACK
                        temperature to increase when falling back when the decoding fails to meet either of the
                        thresholds below. To disable fallback set it to 'None'. (default: 0.2)
  --compression_ratio_threshold COMPRESSION_RATIO_THRESHOLD
                        if the gzip compression ratio is higher than this value, treat the decoding as failed
                        (default: 2.4)
  --logprob_threshold LOGPROB_THRESHOLD
                        if the average log probability is lower than this value, treat the decoding as failed
                        (default: -1.0)
  --no_speech_threshold NO_SPEECH_THRESHOLD
                        if the probability of the <|nospeech|> token is higher than this value AND the decoding has
                        failed due to 'logprob_threshold', consider the segment as silence (default: 0.6)
  --no_speech_strict_lvl {0,1,2}
                        (experimental) Level of stricter actions when no_speech_prob > 0.93. Use beam_size=5 if this
                        is enabled. Options: 0 - Disabled (do nothing), 1 - Reset propmt (see
                        condition_on_previous_text), 2 - Invalidate the cached encoder output (if no_speech_threshold
                        is not None). Arg meant to combat cases where the model is getting stuck in a failure loop or
                        outputs nonsense (default: 0)
  --word_timestamps WORD_TIMESTAMPS, -wt WORD_TIMESTAMPS
                        (experimental) extract word-level timestamps and refine the results based on them (default:
                        True)
  --highlight_words HIGHLIGHT_WORDS, -hw HIGHLIGHT_WORDS
                        underline each word as it is spoken AKA karaoke in srt and vtt output formats (default: False)
  --prepend_punctuations PREPEND_PUNCTUATIONS
                        if word_timestamps is True, merge these punctuation symbols with the next word (default:
                        "'“¿([{-)
  --append_punctuations APPEND_PUNCTUATIONS
                        if word_timestamps is True, merge these punctuation symbols with the previous word (default:
                        "'.。,,!!??::”)]}、)
  --threads THREADS     number of threads used for CPU inference; By default number of the real cores but no more that
                        4 (default: 0)
  --version             Show Faster-Whisper's version number
  --vad_filter VAD_FILTER, -vad VAD_FILTER
                        Enable the voice activity detection (VAD) to filter out parts of the audio without speech.
                        (default: True)
  --vad_threshold VAD_THRESHOLD
                        Probabilities above this value are considered as speech. (default: 0.45)
  --vad_min_speech_duration_ms VAD_MIN_SPEECH_DURATION_MS
                        Final speech chunks shorter min_speech_duration_ms are thrown out. (default: 350)
  --vad_max_speech_duration_s VAD_MAX_SPEECH_DURATION_S
                        Maximum duration of speech chunks in seconds. Longer will be split at the timestamp of the
                        last silence. (default: None)
  --vad_min_silence_duration_ms VAD_MIN_SILENCE_DURATION_MS
                        In the end of each speech chunk time to wait before separating it. (default: 3000)
  --vad_speech_pad_ms VAD_SPEECH_PAD_MS
                        Final speech chunks are padded by speech_pad_ms each side. (default: 900)
  --vad_window_size_samples VAD_WINDOW_SIZE_SAMPLES
                        Size of audio chunks fed to the silero VAD model. Values other than 512, 1024, 1536 may affect
                        model perfomance!!! (default: 1536)
  --compute_type {default,auto,int8,int8_float16,int8_float32,int8_bfloat16,int16,float16,float32,bfloat16}, -ct {default,auto,int8,int8_float16,int8_float32,int8_bfloat16,int16,float16,float32,bfloat16}
                        Type of quantization to use (see https://opennmt.net/CTranslate2/quantization.html). (default:
                        auto)
  --batch_recursive, -br
                        Enables recursive batch processing. Note: If set then it changes defaults of --output_dir.
                        (default: False)
  --beep_off            Disables the beep sound when operation is finished. (default: False)
  --skip                Skips media file if subtitle exists. Works if input is wildcard or directory. (default: False)
  --checkcuda, -cc      Returns CUDA device count. (for Subtitle Edit's internal use)
  --print_progress, -pp
                        Prints progress bar instead of transcription. (default: False)
  --postfix             Adds language as a postfix to subtitle's filename. (default: False)
  --check_files         Checks input files for errors before passing all them for transcription. Works if input is
                        wildcard or directory. (default: False)
  --PR163_off           (For dev experiments) Disables PR163. . (default: False)
  --hallucinations_list_off
                        (For dev experiments) Disables hallucinations_list, allows hallucinations added to prompt.
                        (default: False)
  --one_word {0,1,2}    0) Disabled. 1) Outputs srt and vtt subtitles with one word per line. 2) As '1', plus removes
                        whitespace and ensures >= 50ms for sub lines. Note: VAD may slightly reduce the accuracy of
                        timestamps on some lines. (default: 0)
  --sentence            Enables splitting lines to sentences for srt and vtt subs. Every sentence starts in the new
                        segment. Be default meant to output whole sentence per line for better translations, but not
                        limited to, read about '--max_...' parameters. (default: False)
  --standard            Quick hardcoded preset to split lines in standard way. 42 chars per 2 lines with
                        max_comma_cent=70 and --sentence are activated automatically. (default: False)
  --standard_asia       Quick hardcoded preset to split lines in standard way for some Asian languages. 16 chars per 2
                        lines with max_comma_cent=80 and --sentence are activated automatically. (default: False)
  --max_comma MAX_COMMA
                        (requires --sentence) After this line length a comma is treated as the end of sentence. Note:
                        disabled if it's over or equal to --max_line_width. (default: 250)
  --max_comma_cent {50,60,70,80,90,100}
                        (requires --sentence) Percentage of --max_line_width when it starts breaking the line after
                        comma. Note: 100 = disabled. (default: 100)
  --max_gap MAX_GAP     (requires --sentence) Threshold for a gap length in seconds, longer gaps are treated as dots.
                        (default: 3.0)
  --max_line_width MAX_LINE_WIDTH
                        The maximum number of characters in a line before breaking the line. (default: 1000)
  --max_line_count MAX_LINE_COUNT
                        The maximum number of lines in one sub segment. (default: 1)
  --min_dist_to_end {0,4,5,6,7,8,9,10,11,12}
                        (requires --sentence) If from words like 'the', 'Mr.' and ect. to the end of line distance is
                        less than set then it starts in a new line. Note: 0 = disabled. (default: 0)
  --prompt_max {16,32,64,128,223}
                        (experimental) The maximum size of prompt. (default: 223)
  --reprompt {0,1,2}    (experimental) 0) Disabled. 1) Inserts initial_prompt after the prompt resets. 2) Ensures that
                        initial_prompt is present in prompt for all windows/chunks. (default: 2)
  --prompt_reset_on_no_end PROMPT_RESET_ON_NO_END
                        (experimental) Resets prompt if there is no end of sentence in window/chunk. Note: it's auto-
                        disabled if reprompt=0. (default: True)

ちなみに

  • Word単位で切り出して配置するjson2reaper_word.luaを使うと下のようになります。whisper-standalone-winの生のタイムスタンプを使っていて補正されていないので精度はそれほどではありません。

  • REAPER上でアイテムソースを差し替えたいと思った時に、デフォルトではアイテムのテイク名がリセットされて使い物になりません。これはSWS-Extentionで対応してください。 Xenakios/SWS: Choose new source file for selected takes... というアクションでアイテムのテイク名を維持したままアイテムソースを差し替えることができます。 SWS-Extentionの導入は下を参照すると多分できます。 digi-pal.link