|
发表于 2023-12-29 18:13:44
|
显示全部楼层
要生成srt字幕文件,您可以按照以下步骤进行操作:
1. 首先,您需要安装 `pydub` 和 `pysrt` 这两个库。可以使用以下命令进行安装:
2. 导入所需的库:
- from pydub import AudioSegment
- import pysrt
复制代码
3. 将音频文件加载为 `AudioSegment` 对象:
- audio = AudioSegment.from_file("3.mp3")
复制代码
4. 遍历输出的结果,把每个单词的开始时间和结束时间转换为毫秒:
- subtitles = pysrt.SubRipFile()
- for i, (word, start, end) in enumerate(outputs):
- start_time = int(start * 1000)
- end_time = int(end * 1000)
-
- # 创建字幕项
- subtitle = pysrt.SubRipItem(i+1, start=pysrt.srttime.Time(milliseconds=start_time),
- end=pysrt.srttime.Time(milliseconds=end_time), text=word)
-
- # 添加到字幕集合
- subtitles.append(subtitle)
复制代码
5. 将生成的字幕保存为srt文件:
- subtitles.save("output.srt", encoding='utf-8')
复制代码
下面是完整的代码:
- from whisper_jax import FlaxWhisperPipline
- import jax.numpy as jnp
- from pydub import AudioSegment
- import pysrt
- pipeline = FlaxWhisperPipline("openai/whisper-tiny", dtype=jnp.float16)
- # transcribe and return timestamps
- outputs = pipeline("3.mp3", task="transcribe", return_timestamps=True)
- audio = AudioSegment.from_file("3.mp3")
- subtitles = pysrt.SubRipFile()
- for i, (word, start, end) in enumerate(outputs):
- start_time = int(start * 1000)
- end_time = int(end * 1000)
-
- # 创建字幕项
- subtitle = pysrt.SubRipItem(i+1, start=pysrt.srttime.Time(milliseconds=start_time),
- end=pysrt.srttime.Time(milliseconds=end_time), text=word)
-
- # 添加到字幕集合
- subtitles.append(subtitle)
- # 保存字幕为srt文件
- subtitles.save("output.srt", encoding='utf-8')
复制代码
执行完上述代码后,您将获得一个名为 `output.srt` 的srt字幕文件。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|