当前位置: 首页 > wzjs >正文

洛阳网站建设优化案例百分百营销软件

洛阳网站建设优化案例,百分百营销软件,前端开发工程师是干嘛的,web网站开发论文写在前面:主要原理是提取视频中的音频,通过语音识别文字的方法完成字幕提取;因此,不支持没有声音的视频。 1.音频提取 def convert_mp4_to_mp3(input_file, output_file):"""Convert MP4 video file to MP3 audio…

写在前面:主要原理是提取视频中的音频,通过语音识别文字的方法完成字幕提取;因此,不支持没有声音的视频。

1.音频提取


def convert_mp4_to_mp3(input_file, output_file):"""Convert MP4 video file to MP3 audio."""video_clip = VideoFileClip(input_file)audio = video_clip.audioaudio.write_audiofile(output_file)

2.音频转文字

model = whisper.load_model(WHISPER_MODEL_PATH).to(device)
def transcribe_audio(file_path):"""Transcribe audio file using Whisper model."""result = model.transcribe(file_path,language="zh",# Explicitly tell Whisper to use Chinesetask="transcribe",initial_prompt="这是一段视频教程,请加上标点符号",beam_size=5,# Add beam_size directlyprompt="- 吃了没?- 吃了。",# Add prompt directlyword_timestamps=True,  # 设置为 True 以获取单词时间戳fp16=False,)return result

3.文字保存为字幕


def save_transcription_to_srt(segments, file_path):"""Save transcription segments to an SRT file."""with open(file_path, 'w', encoding='utf-8') as f:for i, segment in enumerate(segments):f.write(f"{i + 1}\n")f.write(f"{seconds_to_hmsm(segment['start'])} --> {seconds_to_hmsm(segment['end'])}\n")translated_text = translate_text(segment['text'])f.write(segment['text'] + f'\n{translated_text}\n\n')

该代码中

translated_text = translate_text(segment['text'])

功能是对字幕进行翻译,因此保存的字幕为双语字幕(解放字幕组劳动力o(* ̄▽ ̄*)ブ)。翻译方法很多,简单提供一个基于ollama的翻译。


def translate_text(content):"""Translate text to English using Ollama."""stream = ollama.chat(model="llama3.2:1b",messages=[{"role": "user", "content": f"下列文字翻译为简体中文,只输出翻译结果:{content}"}],stream=True)output = ''for chunk in stream:output += chunk['message']['content']return output

在上述功能的基础上,进阶两个功能。

4.更新字幕到视频内


def videoclip_with_subtitles(src_mp4, dst_mp4, srt_file):"""Add translated subtitles to the video."""video = VideoFileClip(src_mp4)subtitles = parse_srt(srt_file)text_clips = []for text, start, duration in tqdm(subtitles):# translated_text = translate_text(text)wrapped_text = insert_newlines(text, max_words=10)text_clip = (TextClip(wrapped_text, font='msyh.ttc', fontsize=30, color='red').set_position('top').set_duration(duration).set_start(start))text_clips.append(text_clip)final_video = CompositeVideoClip([video, *text_clips])final_video.write_videofile(dst_mp4, audio_codec='aac')

其中字幕解析为:


def parse_srt(srt_file):"""Parse SRT file and return subtitles as text, start time, and duration."""subtitles = []with open(srt_file, 'r', encoding='utf-8') as file:content = file.read()entries = re.split(r'\n\n+', content.strip())for entry in entries:lines = entry.splitlines()if len(lines) >= 3:time_range = lines[1]start, end = time_range.split('-->')start_time = convert_srt_time_to_seconds(start)duration = convert_srt_time_to_seconds(end) - start_timetext = '\n'.join(lines[2:])subtitles.append((text, start_time, duration))return subtitles

5.根据新的字幕,生成新的音频(方法很多,另开贴,更新后网址会贴在这里),即可以将外文音频转为中文音频。(代码还存在一些缺陷,修改后更新)

def text_to_speech(text, mp3_filename="output.mp3"):# 初始化TTS引擎engine = pyttsx3.init()# 设置语音属性(可选)engine.setProperty('rate', 150)  # 语速engine.setProperty('volume', 1)  # 音量 (0.0到1.0)# 保存为WAV文件wav_filename = "1.wav"engine.save_to_file(text, wav_filename)engine.runAndWait()# 使用pydub将WAV转换为MP3audio = AudioSegment.from_wav(wav_filename)audio.export(mp3_filename, format="mp3")# 读取字幕文件
subs = pysrt.open('data\\27364690929-1-192.srt')# 创建一个空的音频文件列表
audio_clips = []# 遍历每条字幕
for sub in tqdm(subs):# 将字幕文本转换为语音text_list = sub.text.split('\n')text_zh = text_list[-1]  # 确保提取的文本是字符串而不是列表# 生成音频文件audio_filename = f"audio_temp/audio_{sub.index}.mp3"text_to_speech(text_zh, audio_filename)# 创建音频片段audio_clip = AudioFileClip(audio_filename)# 确保使用正确的单位:毫秒到秒# duration = (sub.end.ordinal - sub.start.ordinal) / 1000  # 转为秒# audio_clip = audio_clip.set_duration(duration)# 计算合适的开始时间start_time = sub.start.ordinal  # 转为秒audio_clip = audio_clip.set_start(start_time)audio_clips.append(audio_clip)# 合并所有音频片段
final_audio = concatenate_audioclips(audio_clips)

将新的音频合并到视频内,即可完成音频替换

video = VideoFileClip('data\\27364690929-1-192.mp4').without_audio()# 将新的音频合并到视频中
final_video = video.set_audio(final_audio)# 保存最终视频
final_video.write_videofile('data\\27364690929-1-192-zh-audio.mp4', codec='libx264')

github上有一些非常棒的类似项目,做完才看到,还没深入研究,大家可以上去多看看。

http://www.dtcms.com/wzjs/121761.html

相关文章:

  • 面对撞库 网站应该怎么做2021最火关键词
  • 智能网站建设系统网站推广常用的方法
  • 连锁店进销存管理软件seo搜索引擎优化业务
  • 怎么建动态网站怎样建立一个网络销售平台
  • 泊头网站建设公司seo排名查询工具
  • 企业所得税怎么算公式是什么南京seo推广
  • 宿迁58同城租房网排名优化公司口碑哪家好
  • 定制企业网站开发公司扬州网站推广公司
  • 如何查看一个网站的域名解析北京seo网站优化培训
  • wordpress增加标签页网站优化方案怎么写
  • 不同网站相似的页面百度收录吗百度搜图入口
  • 网站租金可以做办公费吗线上招生引流推广方法
  • 开发网站开票名称是什么网站推广的100种方法
  • 泽成seo网站排名推广策略
  • 湖南省建设工程造价总站网站app怎么开发出来的
  • 开店装修话做那个网站找工人广东公司搜索seo哪家强
  • 网站后台流程图网页设计制作网站素材
  • 怎么查询一个网站有没有做竞价济南seo网站优化
  • 粮食局网站建设方案女生学网络营销这个专业好吗
  • 简要描述网站建设的基本步骤最新中高风险地区名单
  • 一起做网站女装夏季搜狗搜索排名优化
  • 专门做照片的网站百度统计手机app
  • 做微网站 主机 域名北京广告公司
  • 公司想做网站费用要多少钱优化营商环境应当坚持什么原则
  • 北京做冷冻牛羊肉的网站拼多多代运营一般多少钱
  • 政府网站建设文案营销型企业网站的功能
  • 辽宁建设厅网站什么时候换的网店运营工资一般多少
  • 南宁网站建设seoapp注册推广任务平台
  • 梅州网站建设公司seo推广什么意思
  • wordpress幻灯片的调用代码引擎优化seo是什么