Whisperに素材の切り分けとかを手伝ってもらうツール
この記事は音MAD Advent Calendar 2023に参加しています。 adventar.org
はじめに
ここ最近はAIというやつが発達していて、音声素材を切り分ける作業ではそれなりに楽ができるんじゃないかなという気がしていたのでいくつかツールを作ってみました。 下記のリンクは昨年の音MAD Advent CalendarでE-tumさんが書かれたWhisperをGoogle Colab上で動かして素材の切り分けを自動化させていた応用例です。 e-tum.hatenablog.com 今回のツールは同様にWhisperを中核に据えつつ、GUIをつけてローカルで動くようにしたものたちです。 (こういうの作るのはじめてなのでいろいろ大目に見てください)
上記のリンクから画像の4つをダウンロードしてください。
7zは展開してCドライブ直下など適当な場所に配置してください。
TranscriptionRenamer.exe
文字通り、音声ファイルの内容を書き起こしてファイル名をリネームするツールです。 切り分け自体はREAPERのDynamic Splitで概ね精度良くできるけど、ファイル名をつけるのが面倒な場合にBatchで出力してリネームするというような使い方をすると便利かと思います。
positiveallergy.blog50.fc2.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を指定したことでそれにひっぱられて悪影響がでることがあるので注意。
Whisper2json.exe
切り分けすらも面倒だからWhisperにやらせて楽したいが、精度が低いのはイヤだから最終的には自分で微調整したいという場合に便利なツールです。
実際に書き起こし内容をタイムスタンプつけてjsonにするのはwhisper-standalone-winがやってくれているので、このプログラムではそのタイムスタンプをいろんな手段で補正してなるべく使い物になるようにしてます。 話者推定については男女ダウナーアッパーくらいの声の調子は分離できますが、それ以上の精度はいまのところ難しそうでした。
使い方
Add Audio Fileで音声ファイルを追加してGoボタンを押せば音声ファイルと同じディレクトリに同じ名前でjsonファイルが出力されます。UVRを通したような低ノイズの音声のほうが結果は良くなります。
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