Spaces:
Runtime error
Runtime error
| import os | |
| from faster_whisper import WhisperModel | |
| class TranscriptionMaker(): | |
| #書き起こしファイルを吐き出すディレクトリを指定 | |
| def __init__(self,output_dir=os.path.abspath("/tmp/data/transcriptions")): | |
| self.model = WhisperModel("base", device="cpu") | |
| self.output_dir = output_dir | |
| try: | |
| if not os.path.exists(self.output_dir): | |
| os.makedirs(self.output_dir) | |
| except OSError as e: | |
| print(f"Error creating directory {self.output_dir}: {e}") | |
| raise | |
| #音声ファイルのディレクトリを受け取り、書き起こしファイルを作成する | |
| def create_transcription(self,audio_directory): | |
| results = [] | |
| #ディレクトリ内のファイルを全て取得 | |
| if not os.path.isdir(audio_directory): | |
| raise ValueError(f"The specified path is not a valid directory: {audio_directory}") | |
| audio_files = os.listdir(audio_directory) | |
| for audio_file in audio_files: | |
| if os.path.splitext(audio_file)[-1].lower() != '.wav': | |
| continue | |
| audio_path = os.path.join(audio_directory, audio_file) | |
| try: | |
| segments,info = list(self.model.transcribe(audio_path)) | |
| except Exception as e: | |
| print(f"Error transcripting file {audio_path}: {e}") | |
| raise | |
| for segment in segments: | |
| results.append({ | |
| "start": segment.start, | |
| "end": segment.end, | |
| "text": segment.text | |
| }) | |
| #ファイルの書き込み。ファイル名は"読み込みディレクトリ名_transcription.txt" | |
| output_file=os.path.join(self.output_dir,os.path.basename(audio_directory)+"_transcription.txt") | |
| try: | |
| with open(output_file,"w",encoding="utf-8") as f: | |
| for result in results: | |
| f.write(f"{result['text']}\n") | |
| except OSError as e: | |
| print(f"Error writing transcription file: {e}") | |
| raise | |
| return output_file |