Spaces:
Running
Running
File size: 1,790 Bytes
be5673e 23e60a0 be5673e 23e60a0 1a83c9e 23e60a0 be5673e 1a83c9e be5673e 026aeab be5673e 9dfad5c be5673e 026aeab |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
import gradio as gr
from transformers import WhisperProcessor, WhisperForConditionalGeneration
import torch
import librosa
# モデルとプロセッサの読み込み
model_name = "openai/whisper-large-v3"
processor = WhisperProcessor.from_pretrained(model_name)
model = WhisperForConditionalGeneration.from_pretrained(model_name)
# 音声ファイルを文字起こしする関数
def transcribe_audio(audio):
# librosaで音声を読み込む
audio_data, sampling_rate = librosa.load(audio, sr=16000)
# WhisperProcessorに渡すために、音声データを正しい形式に変換
# 返された辞書を表示して出力形式を確認
audio_input = processor(audio_data, return_tensors="pt", sampling_rate=16000)
# 出力形式を確認
print(audio_input) # デバッグ: 出力形式を確認
# input_values ではなく、input_features を使用する場合もある
input_values = audio_input.get('input_values') or audio_input.get('input_features')
if input_values is None:
raise ValueError("音声データが適切に処理されていないか、必要なキーが見つかりませんでした")
# モデルによる文字起こし
with torch.no_grad():
predicted_ids = model.generate(input_values=input_values)
# 文字起こし結果のデコード
transcription = processor.decode(predicted_ids[0], skip_special_tokens=True)
return transcription
# Gradioのインターフェース作成
interface = gr.Interface(
fn=transcribe_audio,
inputs=gr.Audio(type="filepath"), # マイクやファイルから音声を入力
outputs="text",
live=True
)
# インターフェースの起動
interface.launch(share=True) # `share=True`で公開リンクを生成
|