- Python
Whisper文字起こし|Pythonコードとfaster-whisperの速さ比較
手元の PC やサーバーで文字起こしするなら、faster-whisper(Whisper を CTranslate2 という高速な推論ライブラリで動かす実装)が手軽です。 pip install faster-whisper だけで入り、ffmpeg も別に入れなくて済みます。OpenAI の公式実装 openai-whisper は PyTorch で動きます。
from faster_whisper import WhisperModel
model = WhisperModel("small", device="cpu", compute_type="int8")
segments, info = model.transcribe("meeting.mp3", language="ja", beam_size=5, vad_filter=True)
for seg in segments:
print(f"[{seg.start:7.2f} → {seg.end:7.2f}] {seg.text}")
| 比べる点 | openai-whisper | faster-whisper | OpenAI の音声 API |
|---|---|---|---|
| 動く場所 | 手元(PyTorch) | 手元(CTranslate2) | OpenAI のサーバー |
| 入れ方 | pip install -U openai-whisper + ffmpeg |
pip install faster-whisper |
pip install openai |
| 速さ(README の small・CPU) | 6分58秒 | 2分37秒(int8 は 1分42秒) | - |
| 料金 | 無料(電気代・GPU) | 無料(電気代・GPU) | 1分あたり $0.003〜$0.006 など |
| 音声を外に出すか | 出さない | 出さない | 送る |
確認環境:faster-whisper 1.2.1(pip の最新版)・ctranslate2 4.8.2・av 18.1.0・onnxruntime 1.31.0・Python 3.11.15・ffmpeg(Linux、2コア・メモリ 7GiB・GPU なし)。openai-whisper は GitHub の v20250625 タグ(PyPI の最新版 20250625 と同じ)のソースで、引数・既定値・字幕の書き出しを確かめました。手元で動かしたのは、音声の読み込み(decode_audio)、faster-whisper に入っている Silero VAD(声のある区間を見つける小さなモデル)での区間の検出、SRT の書き出し(openai-whisper の WriteSRT との比較)、モデルが取得できないときのエラー、ffmpeg での分割です。音声は faster-whisper のリポジトリの試験用の英語音声(11秒・203秒)を使いました。速さの数字は faster-whisper の README の測定値、モデルの表は openai/whisper の README、OpenAI の API はドキュメントと openai 3.29.0 の SDK の型の定義に基づきます(確認日 2026年10月13日)。
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「Whisper文字起こし|Pythonコードとfaster-whisperの速さ比較」
モデルの大きさとメモリ(公式の表)
モデルは大きいほど精度が上がり、遅く、メモリを使います。 日本語では .en(英語専用)でない多言語モデルを使います。
| モデル | パラメータ数 | 必要 VRAM | 相対速度(large を1) |
|---|---|---|---|
tiny |
39M | 約1GB | 約10倍 |
base |
74M | 約1GB | 約7倍 |
small |
244M | 約2GB | 約4倍 |
medium |
769M | 約5GB | 約2倍 |
large(large-v3) |
1550M | 約10GB | 1倍 |
turbo(large-v3-turbo) |
809M | 約6GB | 約8倍 |
openai/whisper の README の表です。相対速度は A100 の GPU で英語の音声を処理したときの値で、言語や話す速さで変わると注記されています。turbo は large-v3 を速くしたモデルで、翻訳(英語への訳)には学習されていないとあります。
faster-whisper 1.2.1 では、名前を渡すと Hugging Face から CTranslate2 形式のモデルを取得します(utils.py の対応表)。
| 渡す名前 | 取得するリポジトリ |
|---|---|
tiny〜medium |
Systran/faster-whisper-<名前> |
large-v3・large |
Systran/faster-whisper-large-v3 |
turbo・large-v3-turbo |
mobiuslabsgmbh/faster-whisper-large-v3-turbo |
distil-large-v3.5 |
distil-whisper/distil-large-v3.5-ct2 |
available_models() で返った名前は19個でした(tiny.en から turbo まで)。
どれを選ぶかの目安
| 用途 | 目安 |
|---|---|
| まず動くか試す | tiny・base |
| CPU で会議の録音を文字に | small か medium(compute_type="int8") |
| GPU があり精度を上げたい | large-v3 |
| GPU で速さと精度の釣り合い | turbo |
openai-whisper の完成コード
pip install -U openai-whisper
# ffmpeg を別に入れる(例:sudo apt install ffmpeg / brew install ffmpeg)
import whisper
from whisper.utils import get_writer
model = whisper.load_model("small") # 初回は ~/.cache/whisper に保存
result = model.transcribe(
"meeting.mp3",
language="ja",
beam_size=5, # Python からは既定が None(貪欲法)
fp16=False, # CPU なら False(警告を出さない)
initial_prompt="以下は、社内の定例会議の録音です。",
)
print(result["text"])
for seg in result["segments"]:
print(f"[{seg['start']:7.2f} → {seg['end']:7.2f}] {seg['text']}")
get_writer("srt", ".")(result, "meeting.mp3") # meeting.srt を書き出す
コマンドでも動きます。
whisper meeting.mp3 --model small --language Japanese --output_format srt
Python の transcribe() とコマンドでは、ビームサーチの既定が違います。 v20250625 のソースでは、コマンドの --beam_size の既定は 5 ですが、Python の DecodingOptions の beam_size の既定は None(毎回いちばん確からしい語を選ぶ貪欲法)です。コマンドと同じ結果を Python で得るには beam_size=5 を付けます。CPU で fp16 を指定しないと、FP16 is not supported on CPU; using FP32 instead の警告が出ます(ソースの文)。
faster-whisper の完成コード
pip install faster-whisper # ffmpeg は不要(PyAV が同梱のライブラリで読む)
from faster_whisper import WhisperModel
model = WhisperModel(
"small",
device="cpu", # GPU なら "cuda"
compute_type="int8", # GPU なら "float16" か "int8_float16"
cpu_threads=4, # 0 なら既定
)
segments, info = model.transcribe(
"meeting.mp3",
language="ja",
beam_size=5,
vad_filter=True,
initial_prompt="以下は、社内の定例会議の録音です。",
)
print(info.language, info.language_probability, info.duration, info.duration_after_vad)
lines = []
for seg in segments: # ここで初めて文字起こしが進む
print(f"[{seg.start:7.2f} → {seg.end:7.2f}] {seg.text}")
lines.append(seg.text.strip())
text = "\n".join(lines)
segments はジェネレータです。 for で回すか list(segments) にするまで、文字起こしは始まりません(README の説明)。info には、言語・その確からしさ・音声の長さ・VAD で無音を除いたあとの長さが入ります。
GPU で動かすには、README によると CUDA 12 用の cuBLAS と cuDNN 9 が必要です(最新の ctranslate2 は CUDA 12・cuDNN 9 のみ対応)。手元の CPU で使える compute_type は int8・int8_float32・float32・int16 の4つで、float16 は含まれていませんでした(ctranslate2.get_supported_compute_types("cpu") の結果)。
既定値の違い(ソースで確認)
| 引数 | openai-whisper(Python) | faster-whisper | faster-whisper の Batched |
|---|---|---|---|
beam_size |
None(貪欲法) |
5 | 5 |
temperature |
0.0〜1.0 を 0.2 刻み(失敗したら上げる) | 同じ | 同じ |
condition_on_previous_text |
True |
True |
True |
vad_filter |
無し | False |
True |
without_timestamps |
- | False |
True |
compression_ratio_threshold |
2.4 | 2.4 | 2.4 |
no_speech_threshold |
0.6 | 0.6 | 0.6 |
word_timestamps |
False |
False |
False |
| 精度(型) | fp16=True(CPU では FP32) |
compute_type="default" |
同じ |
速さを比べるときは、beam_size をそろえないと公平になりません。faster-whisper の README にも、beam size・スレッド数・WER(単語の誤り率)をそろえて比べるよう注意があります。
日本語の精度を上げる設定
| 設定 | 書き方 | 効果と注意 |
|---|---|---|
| 言語を決める | language="ja" |
指定しないと、最初の30秒で言語を推定する(openai-whisper のソースの文)。短い前置きが英語だと誤ることがある |
| ビームサーチ | beam_size=5 |
候補を5本持って選ぶ。遅くなるが誤りが減りやすい |
| 用語と書き方の見本 | initial_prompt="..." |
固有名詞の表記をそろえる。前の文脈として読まれるので、見本の文の書き方に出力が寄ることがある |
| 無音を飛ばす | vad_filter=True |
無音で同じ文をくり返す(幻聴)のを減らす。速くもなる |
| くり返しを止める | condition_on_previous_text=False |
前の出力を次の入力にしない。同じ文のループが続くときに使う |
| 用語の候補(faster-whisper) | hotwords="RJC 経営戦略推進室" |
出てほしい語を渡す。prefix と同時には効かない |
| モデルを上げる | small → medium → large-v3 |
いちばん効く。時間とメモリが増える |
segments, info = model.transcribe(
"meeting.mp3",
language="ja",
beam_size=5,
vad_filter=True,
vad_parameters={"min_silence_duration_ms": 500},
initial_prompt="以下は、経営戦略推進室の定例会議です。議題は採用、広報、予算です。",
condition_on_previous_text=False, # 同じ文のくり返しが出るときに
)
initial_prompt の仕組みと長さの上限
initial_prompt は「この前にこう話していた」という文脈として、最初の区間(30秒)の前に入れる文です。 指示(「句読点を付けて」など)として読まれるのではなく、続きの文として扱われます。そのため、命令文より、望む書き方の見本の文を書くほうが効きます。
| 項目 | openai-whisper | faster-whisper |
|---|---|---|
| 効く範囲 | 最初の区間。condition_on_previous_text=True なら、そのあとの出力に引き継がれる |
同じ |
| 毎回入れる | carry_initial_prompt=True(v20250625 にある) |
引数は無い |
| 長さ | 文脈として使うのは最大 223 トークン(n_text_ctx // 2 - 1) |
最大 223 トークン(max_length // 2 - 1、max_length は 448) |
長すぎるプロンプトは、超えた分が使われません。用語を並べるなら、出てくる順に短くまとめます。会議の文字起こしを要約する方法は、関連記事「議事録を生成AIで作るプロンプト集|文字起こし要約と決定事項・ToDo抽出」で扱っています。
字幕ファイル(SRT)で出力する
SRT は「番号・時刻・文・空行」をくり返す字幕の形式です。 時刻は 時:分:秒,ミリ秒 で、ミリ秒の前はカンマです(VTT はピリオド)。
faster-whisper で SRT を書く
faster-whisper には字幕を書き出す関数が無いので、自分で書きます。
def srt_time(sec: float) -> str:
ms = round(sec * 1000)
h, ms = divmod(ms, 3_600_000)
m, ms = divmod(ms, 60_000)
s, ms = divmod(ms, 1000)
return f"{h:02d}:{m:02d}:{s:02d},{ms:03d}"
def write_srt(segments, path: str) -> None:
with open(path, "w", encoding="utf-8") as f:
for i, seg in enumerate(segments, start=1):
f.write(f"{i}\n{srt_time(seg.start)} --> {srt_time(seg.end)}\n{seg.text.strip()}\n\n")
segments, info = model.transcribe("meeting.mp3", language="ja", beam_size=5, vad_filter=True)
write_srt(segments, "meeting.srt")
時刻を決めた区間(Segment)を3つ渡して書き出した結果です。1時間を超える時刻も、時の桁で表せていました。
1
00:00:00,000 --> 00:00:02,640
本日の議題は3つです。
2
00:00:02,930 --> 00:00:04,750
まず予算から確認します。
3
01:01:01,500 --> 01:01:03,999
以上です。
同じ区間を openai-whisper の WriteSRT に渡すと、1文字も違わない出力になりました。VTT(WriteVTT)では WEBVTT の行で始まり、1時間未満は 00:02.930 のように時を省いた形でした。
単語ごとの時刻
segments, _ = model.transcribe("meeting.mp3", language="ja", word_timestamps=True)
for seg in segments:
for w in seg.words:
print(f"{w.start:6.2f} {w.end:6.2f} {w.word}")
字幕を短く区切りたいときは、単語の時刻で行を分けます。openai-whisper のコマンドでは、--word_timestamps True と --max_line_width を組み合わせます。
長い録音の扱い
Whisper は音声を30秒ずつ区切って処理します。 1時間の録音もそのまま渡せますが、無音・雑音での幻聴、同じ文のくり返し、メモリと時間に気をつけます。
VAD で無音を飛ばす
faster-whisper の vad_filter=True は、同梱の Silero VAD(assets/silero_vad_v6.onnx)で声のある区間だけを文字起こしします。11秒の英語の音声・8秒の無音・同じ音声をつないだ30秒の音声で、区間を検出した結果です。
| 設定 | 検出した区間 | かかった時間 |
|---|---|---|
既定(min_silence_duration_ms=2000) |
0.0〜10.9秒、19.12〜30.0秒の2区間 | 0.135秒 |
min_silence_duration_ms=500 |
8区間(文の切れ目でも分かれた) | 0.074秒 |
203秒の講義の音声では、既定で10区間・声のある部分は176.8秒、500ミリ秒にすると57区間・169.1秒でした。どちらも1秒かからずに終わりました。
| VadOptions の項目 | 既定値 | 意味 |
|---|---|---|
threshold |
0.5 | これ以上の確からしさを声とみなす |
min_silence_duration_ms |
2000 | この長さ以上の無音で区間を切る |
speech_pad_ms |
400 | 区間の前後に足す余白 |
min_speech_duration_ms |
0 | これより短い声は捨てる |
max_speech_duration_s |
無限 | 1区間の最大の長さ |
README には「既定は控えめで、2秒を超える無音だけを除く」とあります。会議のように話者が交代する録音では、500〜1000ミリ秒に下げると区間が文に近くなります。
まとめて速く:BatchedInferencePipeline
from faster_whisper import WhisperModel, BatchedInferencePipeline
model = WhisperModel("turbo", device="cuda", compute_type="float16")
batched = BatchedInferencePipeline(model=model)
segments, info = batched.transcribe("long_meeting.mp3", language="ja", batch_size=16)
VAD で分けた区間を複数まとめて処理します。1.2.1 のソースでは、batch_size の既定は 8、vad_filter の既定は True、without_timestamps の既定は True でした。README の測定では、large-v2 を GPU で動かしたとき 1分03秒が 17秒(batch_size=8)になっています。そのかわりメモリを多く使います(4525MB → 6090MB)。
ファイルを分けて処理する
メモリが足りないとき、途中で止まっても続きから進めたいとき、OpenAI の API の 25MB の上限に合わせるときは、ffmpeg で分けます。
# 16kHz・モノラルの WAV で 60秒ずつに分ける
ffmpeg -i meeting.mp3 -ar 16000 -ac 1 -c:a pcm_s16le -f segment -segment_time 60 part_%03d.wav
# API 向けに小さくする(16kHz・モノラル・32kbps の mp3)
ffmpeg -i meeting.mp3 -ar 16000 -ac 1 -b:a 32k meeting_small.mp3
203秒の音声は、60秒・60秒・60秒・23秒の4ファイルになりました(最初の3つはどれも 60.032秒)。16kHz・モノラル・32kbps の mp3 では 203秒が 813,681バイトで、この割合なら 25MB に約109分入る計算です。
分けたファイルの時刻は0秒から始まるので、SRT にするときは前のファイルまでの長さを足します。
import subprocess
from pathlib import Path
def duration(path: str) -> float:
out = subprocess.run(
["ffprobe", "-v", "error", "-show_entries", "format=duration", "-of", "csv=p=0", path],
capture_output=True, text=True, check=True,
)
return float(out.stdout)
all_segments, offset = [], 0.0
for part in sorted(Path(".").glob("part_*.wav")):
segs, _ = model.transcribe(str(part), language="ja", beam_size=5, vad_filter=True)
for s in segs:
all_segments.append((s.start + offset, s.end + offset, s.text))
offset += duration(str(part))
ファイルの区切りが文の途中に当たると、その前後の精度が落ちます(OpenAI のドキュメントにも同じ注意があります)。VAD の区間の境目で分けるか、数秒重ねて分けると和らぎます。subprocess の使い方は関連記事「Python subprocessの使い方|run・Popenの違いと例外処理の実例」で扱っています。
速さの比較(faster-whisper の README)
faster-whisper の README は、13分の音声で各実装を比べています。 測ったのは faster-whisper 1.1.0 と openai/whisper v20240930 です。
small モデル・CPU(Intel Core i7-12700K・8スレッド)
| 実装 | 精度 | 時間 | RAM |
|---|---|---|---|
| openai/whisper | fp32 | 6分58秒 | 2335MB |
| whisper.cpp | fp32 | 2分05秒 | 1049MB |
| faster-whisper | fp32 | 2分37秒 | 2257MB |
| faster-whisper | int8 | 1分42秒 | 1477MB |
faster-whisper(batch_size=8) |
int8 | 51秒 | 3608MB |
large-v2 モデル・GPU(RTX 3070 Ti 8GB・CUDA 12.4)
| 実装 | 精度 | 時間 | VRAM |
|---|---|---|---|
| openai/whisper | fp16 | 2分23秒 | 4708MB |
| whisper.cpp(Flash Attention) | fp16 | 1分05秒 | 4127MB |
| faster-whisper | fp16 | 1分03秒 | 4525MB |
| faster-whisper | int8 | 59秒 | 2926MB |
faster-whisper(batch_size=8) |
int8 | 16秒 | 4500MB |
どちらも beam size は 5 です。CPU では int8 にすると速く、メモリも減ります。 自分の環境で比べるときは、次のように測ります(実行時間の測り方は関連記事「Python処理時間の計測方法|perf_counter・timeit比較とコピペ集」で扱っています)。
import time
from faster_whisper import WhisperModel
for ct in ["int8", "float32"]:
model = WhisperModel("small", device="cpu", compute_type=ct)
t = time.perf_counter()
segments, info = model.transcribe("sample.wav", language="ja", beam_size=5)
text = "".join(s.text for s in segments) # 回し切るまで測る
elapsed = time.perf_counter() - t
print(ct, f"{elapsed:.1f}s", f"RTF={elapsed / info.duration:.2f}") # 1未満なら実時間より速い
segments を回し切る前に時計を止めると、ほぼ0秒と出てしまいます。
モデルの置き場所とオフライン
| 項目 | openai-whisper | faster-whisper |
|---|---|---|
| 保存先 | ~/.cache/whisper(download_root で変更) |
Hugging Face のキャッシュ(download_root で変更) |
| 取得元 | OpenAI の配布 URL | Hugging Face |
| ネットに出ない | 先に取得した .pt のパスを渡す |
local_files_only=True かフォルダのパスを渡す |
Hugging Face に接続できない環境で、キャッシュに無いモデルを local_files_only=True で読もうとすると、次のエラーになりました。
LocalEntryNotFoundError: Cannot find an appropriate cached snapshot folder for the specified revision on the local disk and outgoing traffic has been disabled. To enable repo look-ups and downloads online, pass 'local_files_only=False' as input.
社内のネットワークの中で使うときは、外に出られる PC でモデルのフォルダを取得し、WhisperModel("/models/faster-whisper-small") のようにパスを渡します。
OpenAI の音声 API との使い分け
サーバーを持たずに済ませたいなら、OpenAI の音声 API(/v1/audio/transcriptions)があります。 音声は OpenAI に送られます。
| モデル | ドキュメントの位置づけ | 推定コスト |
|---|---|---|
gpt-transcribe |
元の言語での文字起こしに推奨。prompt・keywords・languages に対応 |
$0.0045/分 |
gpt-4o-transcribe |
既存の連携で使える。prompt とストリーミングに対応 | $0.006/分 |
gpt-4o-mini-transcribe |
同上 | $0.003/分 |
gpt-4o-transcribe-diarize |
話者のラベル(誰が話したか)が要るとき | 料金ページに記載なし |
whisper-1 |
単語・区間のタイムスタンプ、英語への翻訳 | 料金ページに記載なし |
from openai import OpenAI
client = OpenAI()
with open("meeting_small.mp3", "rb") as f:
tr = client.audio.transcriptions.create(
model="gpt-transcribe",
file=f,
language="ja",
prompt="社内の定例会議。議題は採用、広報、予算。",
)
print(tr.text)
# 字幕(SRT)が欲しいとき
with open("meeting_small.mp3", "rb") as f:
srt = client.audio.transcriptions.create(model="whisper-1", file=f, response_format="srt")
| 項目 | ドキュメント・SDK の型の記載 |
|---|---|
| ファイルの上限 | 25MB。mp3・mp4・mpeg・mpga・m4a・wav・webm |
response_format |
json・text・srt・verbose_json・vtt・diarized_json。gpt-4o-transcribe・gpt-4o-mini-transcribe は json のみ |
| 単語の時刻 | timestamp_granularities は whisper-1 のみ(verbose_json が必要) |
whisper-1 の prompt |
224 トークンまで。綴りの見本向きで、指示には従いにくい |
| 長い音声 | 25MB 以下に分ける。文の途中で切らないよう注意 |
| 区切り方 | chunking_strategy="auto" でサーバー側の VAD が区切る(diarize では必須) |
| 判断の軸 | ローカル(faster-whisper) | OpenAI の音声 API |
|---|---|---|
| 音声を社外に出せない | 向く | 社内の規程の確認が要る |
| GPU が無い・すぐ始めたい | CPU でも動くが遅い | 向く |
| 大量の録音を毎日処理 | 台数を増やせば単価が下がる | 分単位の課金 |
| 字幕の細かい時刻 | word_timestamps=True |
whisper-1 の verbose_json |
| 話者を分けたい | 別の仕組み(話者分離)を組み合わせる | gpt-4o-transcribe-diarize |
OpenAI の SDK の基本は、関連記事「OpenAI API Python入門|Responses APIのコピペ集」で扱っています。社外に出してよい情報の決め方は、関連記事「生成AI利用ガイドラインのテンプレート|入力してはいけない情報の一覧つき」で扱っています。
よくある質問
Q. 同じ文が何度もくり返されます。
A. 無音や雑音の区間で起きやすい現象です。vad_filter=True で無音を飛ばし、condition_on_previous_text=False で前の出力を引き継がないようにします。openai-whisper では word_timestamps=True と hallucination_silence_threshold(秒)で、長い無音のあとの怪しい区間を飛ばせます。
Q. 句読点が付きません。
A. initial_prompt は前の文脈として読まれるので、句読点のある日本語の見本の文を入れる方法があります。効き方は音声とモデルで変わるため、足りないときは文字起こしのあとに LLM で整えます。
Q. openai-whisper と faster-whisper で結果が違います。
A. 既定の beam_size(Python の openai-whisper は貪欲法、faster-whisper は 5)と VAD の有無が違います。そろえてから比べます。
Q. 仮想環境に分けて入れたい。 A. PyTorch など大きなライブラリが入るので、プロジェクトごとに分けると管理しやすくなります。関連記事「Python venvの使い方|仮想環境の作成・有効化・削除をOS別にコピペ」で扱っています。
Q. 話者を分けられますか。
A. Whisper 自体には話者を分ける機能はありません。ローカルでは話者分離のライブラリと組み合わせ、API なら gpt-4o-transcribe-diarize を使います。
まとめ
- 手元で動かすなら faster-whisper(
pip install faster-whisper、ffmpeg 不要)。CPU はcompute_type="int8" - モデルは
small〜medium(CPU)、large-v3・turbo(GPU) が目安。turboは翻訳に使わない - 日本語は
language="ja"・beam_size=5・vad_filter=True・initial_prompt(見本の文、最大223トークン) - openai-whisper の Python は
beam_sizeの既定が None。コマンド(5)と結果が違う - SRT は
時:分:秒,ミリ秒。faster-whisper は自分で書く(openai-whisper のWriteSRTと同じ出力にできる) - 長い録音は VAD・BatchedInferencePipeline・ffmpeg での分割と時刻の足し算
- サーバーを持たないなら OpenAI の音声 API(25MB まで、
gpt-transcribeは $0.0045/分)
参考・出典
確認日はいずれも 2026年10月13日です。
- GitHub「openai/whisper」:https://github.com/openai/whisper
- GitHub「SYSTRAN/faster-whisper」:https://github.com/SYSTRAN/faster-whisper
- PyPI「faster-whisper」:https://pypi.org/project/faster-whisper/
- PyPI「openai-whisper」:https://pypi.org/project/openai-whisper/
- OpenAI API ドキュメント「Speech to text」:https://developers.openai.com/api/docs/guides/speech-to-text
- OpenAI API ドキュメント「Pricing」:https://developers.openai.com/api/docs/pricing
- GitHub「openai/openai-python」:https://github.com/openai/openai-python
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「Whisper文字起こし|Pythonコードとfaster-whisperの速さ比較」
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。