
OpenAI Whisperã§ãæåèµ·ããããã(Windows)
OpenAI Whisperã¯ãé³å£°ãã¡ã€ã«ãåç»ãã¡ã€ã«ãããæåèµ·ãããããã¹ã¯ãªããã§ãããAIã®åŠç¿ããŒã¿äœæçã§å€§ãã«åœ¹ã«ç«ã¡ãŸããä»åã¯ããããªWhisperã®äœ¿ãæ¹ãã¡ã¢ããŠãããŸãã
Whisperã¯ãmp4ãwavãªã©ã®åç»ãé³å£°ãã¡ã€ã«ããsrt/txt(ã¿ã€ã ã³ãŒããªã)/vttã®ã¿ã€ã ã³ãŒãä»ããåå¹ãã¡ã€ã«ã«å€æããŸãã
1.ã€ã³ã¹ããŒã«
# on Windows using Chocolatey (https://chocolatey.org/)
choco install ffmpeg
# on Windows using Scoop (https://scoop.sh/)
scoop install ffmpeg
# anaconda
conda install -c conda-forge ffmpeg# æšæºã€ã³ã¹ããŒã«
pip install -U openai-whisper
#Gitããã€ã³ã¹ããŒã«
pip install git+https://github.com/openai/whisper.git
#ã¢ããããŒã(ã€ã³ã¹ããŒã«æžã¿ã®ã¿)
pip install --upgrade --no-deps --force-reinstall git+https://github.com/openai/whisper.git2.å®è¡
翻蚳察象ã®åç»ãã¡ã€ã«ãŸãã¯é³å£°ãã¡ã€ã«ããããã£ã¬ã¯ããªã§ãã³ãã³ãããã³ããçãå®è¡ã以äžã®ã³ãã³ããå
¥åããŸãã
翻蚳察象ã®ãã¡ã€ã«ã«ã¯ãã¹ããŒã¹ãå«ããªãããã«ããŠãã ããã
äŸ:
# åç»ãã¡ã€ã«ãæ¥æ¬èªã«å€æãã
whisper input_movie.mp4 --language Japanese --model medium3.èšå®é¢æ°äžèЧ
A.ã¢ãã«äžèЧ(--model)
ãã©ã¡ãŒã¿æ°ãå°ãªãã¢ãã«ã»ã©ãåŠçã軜ããGPUã¡ã¢ãªæ¶è²»ãå°ãªãã§ãããç²ŸåºŠãæªåããŸãã
tiny 39M Parameters
base 74M Parameters
small 244M Parameters
medium 769M Parameters
large 1550M Parameters
tiny.en
base.en
small.en
medium.en
large-v1
large-v2
B.ã¢ãã«ãã¡ã€ã«ã®ä¿åå (--model_dir MODEL_DIR)
ããã©ã«ãä¿åå
uses ~/.cache/whisper
C.PyTorch ã®æšè«ã«äœ¿ãããã€ã¹ãèšå®--device DEVICE
PyTorch ã®æšè«ã«äœ¿ãããã€ã¹ (ããã©ã«ã: cpu)
cudaã€ã³ã¹ããŒã«æžã¿ã®å Žåãcudaã«ãŠGPUãçšããæšè«ãå¯èœ(CPUããé«é)
GPUæšè«ããå Žåã¯pytorchãå¿
èŠã«ãªããŸã(CUDA11.8ã§åäœç¢ºèªæžã¿)
https://pytorch.org/get-started/locally/
#CPUæšè«
--device cpu
#GPUæšè«
--device cudaD.çµæä¿åå --output_dir OUTPUT_DIR, -o OUTPUT_DIR
directory to save the outputs (default: .)
E. é²æç¶æ³ããããã°ã¡ãã»ãŒãž --verbose VERBOSE
é²æç¶æ³ããããã°ã¡ãã»ãŒãžãåºåãããã©ããïŒããã©ã«ãïŒTrueïŒã
F. ã¿ã¹ã¯--task {transcribe,translate}
æåèµ·ããã®ã¿ãã翻蚳ãè¡ãããèšå®ã§ããã(ããã©ã«ã: transcribe)
#ããã¹ããè±èªã«ç¿»èš³
--task translateG.é³å£°èšèªèšå® --language
é³å£°ã§è©±ãããèšèªãèšèªæ€åºãè¡ãå Žå㯠None ãæå®ããïŒããã©ã«ãïŒNoneïŒã
察å¿èšèªäžèЧ
{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,hi,hr,ht,hu,hy,id,is,it,iw,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,zh,Afrikaans,Albanian,Amharic,Arabic,Armenian,Assamese,Azerbaijani,Bashkir,Basque,Belarusian,Bengali,Bosnian,Breton,Bulgarian,Burmese,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,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}
H:枩床 --temperature TEMPERATURE
ãµã³ããªã³ã°ã«äœ¿çšããæž©åºŠïŒããã©ã«ãïŒ0ïŒ
枩床ã£ãŠãªã«ïŒã£ãŠäººã¯ä»¥äžã®ãµã³ããªã³ã°æž©åºŠãåç §
I:ãµã³ããªã³ã°æåè£æ° --best_of BEST_OF
--best_of BEST_OF 枩床ã0ã§ãªãå Žåã®ãµã³ããªã³ã°æã®åè£æ° (ããã©ã«ã: 5)
J:ããŒã æ° --beam_size BEAM_SIZE
ããŒã ãµãŒãã®ããŒã æ°ã枩床ã0ã®æã®ã¿é©çšïŒããã©ã«ãïŒ5ïŒ
K:ããŒã ãã³ãŒãå¿èå€ --patience PATIENCE
--patience PATIENCE ãªãã·ã§ã³ ããŒã ãã³ãŒãã«äœ¿çšããå¿èå€ã§ãhttps://arxiv.org/abs/2204.05424 ã®ããã«ãªããŸãã
ããã©ã«ã (1.0) ã¯åŸæ¥ã®ããŒã ãµãŒããšåç (ããã©ã«ã: ãªã)
L:ååŠçãšããŠæäŸããããã³ããããã¹ã --initial_prompt INITIAL_PROMPT
(ããã©ã«ã: ãªã)
M:--compression_ratio_threshold COMPRESSION_RATIO_THRESHOLD
gzip ã®å§çž®çããã®å€ãã倧ããå Žåããã³ãŒãã«å€±æãããã®ãšããŠæ±ãã(ããã©ã«ã: 2.4)
N:--logprob_threshold LOGPROB_THRESHOLD
å¹³å察æ°ç¢ºçããã®å€ããäœãå Žåããã³ãŒãã«å€±æãããã®ãšããŠæ±ã
(ããã©ã«ã: -1.0)
O:--no_speech_threshold NO_SPEECH_THRESHOLD
<|nospeech|> ããŒã¯ã³ã®ç¢ºçããã®å€ããé«ããã〠`logprob_reshold` ã«ãããã³ãŒãã倱æããå Žåããã®ã»ã°ã¡ã³ããç¡é³ãšã¿ãªããlogprob_threshold` ã®ããã«ãã³ãŒãã«å€±æããå Žåããã®ã»ã°ã¡ã³ããç¡é³ãšã¿ãªã (ããã©ã«ã: 0.6)
P: --threads THREADS
CPUæšè«ã®ããã« torch ã䜿çšããã¹ã¬ããæ°; MKL_NUM_THREADS/OMP_NUM_THREADS ã«åªå
ããã
(ããã©ã«ã: 0)
4.話è åé¢ãå®è£ ãã(pyannote)
åè
A.ã€ã³ã¹ããŒã«
pip install pyannote.audioB.ãµã³ãã«ã®æºå
Pyannoteã¯ãåç»ãã¡ã€ã«çãæã蟌ããWhisperãšç°ãªããwavãã¡ã€ã«ã®ã¿å¯Ÿå¿ãªã®ã§ãWavã®ãµã³ãã«ãæºåããå¿ èŠããããŸãã
ä»åã¯ãã¡ãã®åç»ã®ãµã³ãã«ã«çšããŸããã
C.ã³ãŒã
以äžã®ã³ãŒããå®è¡ããããã«ã¯ãHugging Faceã®ã¢ã¯ã»ã¹ããŒã¯ã³ãå¿
èŠã«ãªããŸããHugging Faceã®ã¢ã«ãŠã³ããäœæ+èšå®ãããAccess TokensãäœæããŠãã ããã
ãŸãã話è
åŠç¿ã¬ããžããªãå©çšããããã«ãã¬ããžããªéçºè
ã®ã¢ã³ã±ãŒãã«çããå¿
èŠããããŸããã¢ã«ãŠã³ãäœæåŸã以äžã®URLã«ã¢ã¯ã»ã¹ããŠã¢ã³ã±ãŒãã«åçããã³å
容ã«åæããå¿
èŠããããŸãã
â»ã¯ã©ã€ã¢ã³ãã¯èŠæ±ãããç¹æš©ãä¿æããŠããŸããããšè¡šç€ºããããïŒ
éçºè
ã¢ãŒããONã«ããããšã§è§£æ±ºããŸããã¹ã¿ãŒãâæ€çŽ¢ããŒã«ãéçºè
ã¢ãŒãããšå
¥åããèšå®ç»é¢ã§éçºè
ã¢ãŒããONã«ããŸãã
import whisper
from pyannote.audio import Pipeline
from pyannote.audio import Audio
#é³å£°ãã¡ã€ã«èªã¿èŸŒã¿
audio_file = "sample.wav"
#話è
åé¢ã¢ãã«ããŒãïŒåé¢å®è¡
pipeline = Pipeline.from_pretrained("pyannote/speaker-diarization",use_auth_token="your_token")
diarization = pipeline(audio_file)
audio = Audio(sample_rate=16000, mono=True) #é³å£°ãªããžã§ã¯ãã®åæå
#Whisper ã¢ãã«ããŒã
model = whisper.load_model("medium")
i = 1
result=[]
for segment, _, speaker in diarization.itertracks(yield_label=True):
waveform, sample_rate = audio.crop(audio_file, segment)
text = model.transcribe(waveform.squeeze().numpy())["text"]
print("segment:",segment,"\nspeaker:",speaker,"\ntext:",text)
result.append(f"{i}\n{segment}\n{speaker}: {text}\n")
i+=1
print(result)
result="\n".join(result)
# åå¹ãã¡ã€ã«ã®äœæ
with open("result.srt", "w", encoding="utf-8") as file:
file.write(result)D:çµæ
1
[ 00:00:00.497 --> 00:00:03.130]
SPEAKER_00: æ·±å§ããå®éã«é転ããããšããããšã§ãã
2
[ 00:00:03.012 --> 00:00:49.620]
SPEAKER_02: ããã§ãããæšªæµã§å°ãã ã15åãããèªåã§é転ããæ©äŒããã£ããã§ãããã©ããäžèšã§èšããšãã¡ãããšããè»ãšãããããªã€ã¡ãŒãžã§ããã質æãèµ°è¡æ§èœã¯ã©ããªãã§ãã?èµ°è¡æ§èœã¯ãç§èµ°è¡æ§èœã®å°éå®¶ã§ã¯ãããªãã§ãããã©ããä»ãŸã§ä¹ã£ãŠãã15ãã20ã®EVã®äžã§ããæè²ãªããšããããäŸ¡æ Œãèãããšã³ã¹ãã¯ãããããããããªãããªãšããæãã§ãäžåœè»ãšãããšå®ã£ãœãã¿ãããªã€ã¡ãŒãžãæãããæ¹ãããã£ããããããããªããã§ãããã©ããå šç¶ãããªããšãªãã§ãããäžéšã®å¿é ¬è»ãšæ¯ã¹ãŠããå è£ ãªããã¯è¯ããã®ã䜿ã£ãŠãããªãšãããããªå°è±¡ã§ãããäžè¥¿ãããããã§ãã?
3
[ 00:00:50.582 --> 00:01:18.612]
SPEAKER_03: ããã§ãããã®ç§èªèº«ã¯ä¹ã£ãããšã¯ãªããã§ãããã©ã ãšã«ããå¢ããä»ãããã§ããbyd ã®è»ã¯äžåœã®ã·ã§ã¢ããã8%ãããã«æé·ããŠãŸãã®ã§æ¬åœã«ãã®ãã®é ãªã®éã«ãããæ°ãã€ããšãšãã§ããªãååšã«ãªã£ãŠè»èªäœãã§ãã éåžžã«ãããã®ãã§ããŠãŸãããè»ã䞊ãã§ããªããšç§å人çã«ã¯æ¬¡åºãŠãããã«ãã£ã³ãŠè»ãããªãæ¥æ¬ã«åºããããããªãããªãªããŠæã£ãŠãŸãã
4
[ 00:01:17.987 --> 00:01:55.450]
SPEAKER_01: ãã® BYD ã®æ¥æ¬ã§ã®åããªãã§ããã©ããä»äžè¥¿ããããããã£ãããã«ã次ãä»å¹Žããã®ãã«ãã£ã³ãšããå°åãããããã¯ã¿ã€ãããããçºå£²äºå®ãããã«ãã»ãã³ã¿ã€ãããããšããããšã§ããããããããæ¥ã«åçªã«é²åºããŠããããã§ã¯ãªããŠãæ¢ã«åçšè»ãEVãã¹ãªã©ã§ã¯æ¥æ¬ã§å®çžŸãããããªããã€ãä»åã¯è²©å£²åºã25å¹ŽåŸ ã€ãŸã§ã«ã¯100åºèã«ãããšããããšã§ãéåžžã«äžå®¶è£œã®ãã®ã§ãéå»ãéåœè»ãªãããããŸããããã©ãããããããã®ã§ã¯ãªããŠãã¡ãããšãã£ãŒã©ãŒããããšãããããããèšç»ã«ãªã£ãŠããŸãã
5
[ 00:01:55.450 --> 00:02:20.340]
SPEAKER_02: ããã§ãããèŒžå ¥è ãšããŠ100åºèãšããã®ã¯ãããªãã«æ¬æ°ã§èããŠãããã ãªãšãããããªå°è±¡ã§ãããã§ãå ã»ã©äžè¥¿ããããããããŸããããã«ããã®ãã«ãã£ã³ãªããã¯300äžåå°ãããšãããããªãè©±ãæ¥æ¬ã®è©èã®æ±çŠå¯ºç€Ÿé·ããããŠããã®ã§ãããªãç«¶äºåãããããããªãããšæããŸããã
6
[ 00:02:20.459 --> 00:02:31.950]
SPEAKER_01: ããã¯äžè¥¿ããã®äžåœã§ã売ããŠããšèšãããŠãŸããã©ããããããšãã®æ¥æ¬ã§ãè£å©é ãŸããããã®å°åã«ãã£ãŠéããŸããã©æ±äº¬ã ãšããã«ã§è²ããªè£å©éããã£ãŠããªã
7
[ 00:02:31.950 --> 00:03:02.410]
SPEAKER_03: äžåœã®ãã³ãã ãš11äžååã£ãŠãã¯ãã§ãã®ã§ããã®ãŸãŸæã£ãŠãããš220äžåããããªãã§ããã©ããŸããè²ã ãã£ãŠ300äžåè¿ããªããã§ããããã©ãè£å©éãã£ããä»ããšã§ããã200äžåã¡ãã£ãšã§è²·ããŸãããããããããšããããã€ãªã¹ã¯ãã¹ã¯ã©ã¹ã®è»ã§EVã§ããã®å€æ®µã§æãå±ãã£ãŠããã®ã¯ã¡ãã£ãšé åçã ããããäžã€ãåœå åžå Žã«ãã®ã»ã°ã¡ã³ãå ±è¬ããªãã§ãããããããæå³ã«ãããŠã¯ã¡ãã£ãšæ³šç®ãªãã§ããããããŠãã¯ãã
8
[ 00:03:02.292 --> 00:03:54.655]
SPEAKER_00: ã¯ãã§ã¯byd ãšã¯ãŸãã©ããªäŒæ¥ãªã®ãèŠãŠãããŸããã 黿°èªåè»ã®è²©å£²ã§ã¯ã¢ã¡ãªã«ã®ãã¹ã©ã«æ¬¡ãäžç第2äœã§ãã§ phv ã€ãŸããã©ã°ã€ã³ãã€ããªããè»ãŸã§å«ãããšãã¹ã©ãæããŠäžç1äœã«ãªããŸã1995幎ã«é»æ°èªåè»ã«ã¯æ¬ ãããªãããããªãŒã¡ãŒã«ãŒãšããŠåµæ¥ 2003幎ã«èªåè»äºæ¥ã«åå ¥ãããšããããšã§ãŸã 20幎ãªãã§ããããããªãŒã®ä»ã«ã°ã«ãŒãäŒç€Ÿã§ã¯åå°äœã®è£œé ãè¡ã£ãŠããŸã ãããŠæµ·å€å±éãªãã§ãããã©ã2021幎ã®ãã«ãŠã§ãŒãç®åãã«ãšãŒããããžé²åº2022幎ã«ã¯ãªãŒã¹ãã©ãªã¢ã¿ã€ã«ãããŠä»å¹Žæ¥æ¬ãžé²åº æ¥å¹Žã«ã¯ã§ããã¿ã€ã«é»æ°èªåè»ã®å·¥å Žãäœãæ±åã¢ãžã¢ã«ãæ¬æ Œçã«æã£ãŠåºããšããããšã§äžã«ãå ã»ã©ããã£ããã£ãŠãŸããå¢ããããŸããããŒ
9
[ 00:03:54.773 --> 00:05:02.948]
SPEAKER_03: ç§ãåããŠãã®äŒç€Ÿã«è¡ã£ãã®ã¯ããã§ãããããæè³ããçŽåŸã® 2009幎ã10幎ããããªãã§ãããã©ããã®é ã¯ãŸã æ®å¿µãªããã«ããŒã©ã®ã¢ãããè»ã売ã£ãŠããããªãããªç¶æ ã ã£ããšæããŸãã ãããã倧äœ1幎ã«1åã¯æ¬ç€Ÿã®æ¹ã«èšªåããŠã¢ããããŒãããŠèããŠããŸããããã©ãããããããšãããŸã§æ¬æ Œçãªæ©é¢ã黿°èªåè»äŒç€Ÿã«ãªã£ãŠãããš ãã®åŒ·ã¿ã£ãŠã©ãã«ããã®ãã£ãŠããã®ãèãããšèªåè»ã¡ãŒã«ãŒã§ã¡ãããšé»æ± ãå 補ããŠãã ä»ã¿ããªå§ããŸãããã§ãæ¬åœã«å 補ããŠããã¡ãŒã«ãŒã§äžçã«3瀟ãããªããšããããšã§ããã¯ãã®byd ãš tesla ãš toyota èªåè»ã£ãŠããšã«ãªããã§ãã ããããæå³ã«ãã£ãŠã¯ãã£ã±ã黿± ããã£ãããšãã¯ããã®æ ¹æ¬çã«åŒ·ã¿ãæã£ãŠãããšããããã®byd ã®æ¬æ ŒçãªåŒ·ãã§ããã黿± ã ããããªã㊠å®ã¯åå°äœããäŒéåã«å«ããŠããªããã®å éšã§åçŽçµ±åãã匷ã¿ã®ããçµç¹ãæã£ãŠãããšãããšãããäŸãã°ããã®ã¥ããäŒæ¥ãšããŠç¢ºç«ããŠãããšãããšãã ããããã¯ããã®ãããšåºãŠããŠãã it äŒæ¥ãšã¯éããã®ãããããããã ãšæããŸã æ·±å·ãããããã§ãã