You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用FFmpeg给WAV音频首尾添加静音以扩展时长?

给现有音频首尾添加指定时长静音

要为a.wav首尾各添加1.945秒静音,直接用FFmpeg的concat滤镜结合anullsrc生成静音即可,无需单独生成中间文件:

1. 匹配原音频参数

静音的采样率、通道数必须和原音频一致,执行以下命令获取参数:

ffprobe -v error -select_streams a:0 -show_entries stream=sample_rate,channels -of csv=p=0 a.wav

输出类似44100,1,代表44100Hz采样率、单通道。

2. 执行拼接命令

把获取到的参数代入,以44100Hz单通道为例:

ffmpeg -i a.wav -f lavfi -i "anullsrc=channel_layout=mono:sample_rate=44100:d=1.945" -filter_complex "[1:a][0:a][1:a]concat=n=3:v=0:a=1" extended_a.wav
  • [1:a]是生成的静音段,[0:a]是原音频,concat=n=3按「静音→原音频→静音」顺序拼接
  • 最终输出时长为1.945+9.432+1.945=13.322秒,和目标13.321秒的误差是浮点计算导致,可忽略。
结合srt/vtt字幕生成TTS完整语音

FFmpeg本身不具备TTS生成能力,但可以配合外部TTS工具(如eSpeak、自定义AI模型)生成的音频片段,按照字幕时间轴拼接成完整音频,流程如下:

1. 解析字幕时间轴

从srt/vtt中提取每个字幕的开始时间、结束时间、文本内容,计算出:

  • 开头静音时长(从0到第一个字幕的开始时间)
  • 每个字幕的时长(结束时间-开始时间)
  • 字幕间的间隔静音时长(下一个字幕开始时间-上一个字幕结束时间)
  • 结尾静音时长(可选)

2. 生成并调整TTS片段

用TTS工具将每个字幕文本转为音频,若TTS时长和字幕时长不匹配,用FFmpeg调整:

  • 变速(范围0.5-2.0,超范围可叠加多个atempo):
    ffmpeg -i clip1.wav -filter:a "atempo=1.2" adjusted_clip1.wav
    
  • 补静音(比如给片段补0.3秒静音):
    ffmpeg -i clip1.wav -f lavfi -i "anullsrc=channel_layout=mono:sample_rate=44100:d=0.3" -filter_complex "[0:a][1:a]concat=n=2:v=0:a=1" adjusted_clip1.wav
    

3. 拼接所有片段

如果片段不多,直接用concat滤镜拼接:

ffmpeg -f lavfi -i "anullsrc=channel_layout=mono:sample_rate=44100:d=1" -i adjusted_clip1.wav -f lavfi -i "anullsrc=channel_layout=mono:sample_rate=44100:d=1.5" -i adjusted_clip2.wav -filter_complex "[0:a][1:a][2:a][3:a]concat=n=4:v=0:a=1" full_tts_audio.wav

片段较多的话,用文件列表更方便:

  1. 创建audio_list.txt:
file 'silence_start.wav'
file 'adjusted_clip1.wav'
file 'silence_gap.wav'
file 'adjusted_clip2.wav'
file 'silence_end.wav'
  1. 执行拼接:
ffmpeg -f concat -safe 0 -i audio_list.txt -c copy full_tts_audio.wav

内容的提问来源于stack exchange,提问作者Furkan Gözükara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 12:05:19