若谷学院
互联网公司技术架构分享

视频/音频处理FAQ & 调用百度API把语音转为文本(speech to text by Baidu api)

安装ffmpeg

brew install ffmpeg –with-fdk-aac —with-sdl2–with-freetype –with-libass –with-libquvi –with-libvorbis –with-libvpx –with-opus –with-x265
 

如何提取视频中的音频?

https://www.jianshu.com/p/a7971405a492
ffmpeg -i input.avi -b:a 128k output.mp3
-b:a 128k 是指输出的音频的码率(如果你嫌文件大可以设置为64k,据我的经验,对于英语听力完全无影响);
 
mac中使用quicktime player:
使用 QuickTime Player 打开目标视频文件,依次点击菜单栏中的「文件 – 导出 – 仅音频」,设置导出文件名称、存放位置,然后点击「存储」,即可将其导出为包含 AAC 音轨的 Apple MPEG 4 音频文件。
 

如何只截取指定时间段的音频?

这个非常方便,在上面的命令里加入两个参数-ss 开始时间,-to 结束时间, 变成下面这个样子
./ffmpeg -i DeadPoetsSocietyCD1.avi -ss 00:00:00.000 -to 00:02:00.000 -b:a 128k output.mp3 

可以对mp2文件进行截取吗?

当然可以,上面的命令稍微修改一下
./ffmpeg -i DeadPoetsSocietyCD1.mp3 -ss 00:00:00.000 -to 00:02:00.000 -b:a 128k output02.mp3

可以直接对视频进行剪辑吗,输出的文件还是视频文件?

当然可以,上面的命令稍微修改一下
./ffmpeg -i DeadPoetsSocietyCD1.avi -ss 00:00:00.000 -to 00:02:00.000 -b:a 128k output.avi

mp4格式的视频中提取音频,导出为wav/pcm

ffmpeg -i react-native.mp4 -acodec pcm_s16le -ac 1 -ar 16000 output.wav
ffmpeg -i put.wav -f s16be -ar 16000 -acodec pcm_s16be file.raw
 pcm是没有压缩的原始语音格式,可以导入到audacity中播放。
ffmpeg -ireact-native.mp4 -f s16le -acodec pcm_s16le output-pcm.raw
ffmpeg -ireact-native.mp4 -f s16le -acodec pcm_s16le -ar 16000 output-pcm-16000.raw
 
如何替换视频中的音频
https://jingyan.baidu.com/article/3052f5a1b2be3997f31f868b.html
Adobe Audition, 插入视频,在多轨界面,视频跟音频是分开的,可以进行编辑。
也可以使用 OpenShot来进行替换。

如何用一段音频替换mp4视频格式的原有音频?

只用两个命令。一个是提取视频,一个是合并视频与新音频:
提取:
ffmpeg -i test.mp4 -vcodec copy -an 视频流.avi
合并:
ffmpeg -i 视频流.avi -i 音频流.mp3 -vcodec mpeg4 -acodec copy 合并.mp4
 

语音转换为文本 Speech to text

http://yuyin.baidu.com/docs/asr/190

## speech to text
from aip import AipSpeech
import json

“”” 你的 APPID AK SK “””
APP_ID = ‘7071180’
API_KEY = ‘xxxx’
SECRET_KEY = ‘zzz’
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

# 读取文件
def get_file_content(filePath):
with open(filePath, ‘rb’) as fp:
return fp.read()

# 识别本地文件
result = client.asr(get_file_content(‘/Users/davideuler/output.wav’), ‘wav’, 16000, {
‘lan’: ‘zh’,
})

print(json.dumps(result[“result”],ensure_ascii=False))

 

如何读取wav文件,可视化显示声音的波形图

# samplerate, data = wavfile.read(sys.argv[1])
scipy.io.wavfile.read()返回的samplerate表示每秒钟的采样数,
返回的数据表示所有的采样的值,len(data)/samplerate 即是音频总的时长(秒)。
 
# Visualize wav file by matplotlib
# Load the required libraries:
#   * scipy
#   * numpy
#   * matplotlib
from scipy.io import wavfile
from matplotlib import pyplot as plt
import sys
import numpy as np
 
if len(sys.argv) < 2:
    print(“Plays a wave file.\n\nUsage: %s filename.wav” % sys.argv[0])
    sys.exit(-1)
 
# Load the data and calculate the time of each sample
samplerate, data = wavfile.read(sys.argv[1])
times = np.arange(len(data))/float(samplerate)
 
# Make the plot
# You can tweak the figsize (width, height) in inches
plt.figure(figsize=(30, 4))
plt.fill_between(times, data, color=’k’)
plt.xlim(times[0], times[-1])
plt.xlabel(‘time (s)’)
plt.ylabel(‘amplitude’)
# You can set the format by changing the extension
# like .pdf, .svg, .eps
plt.savefig(‘plot.png’, dpi=100)
plt.show()
好烂呀没啥价值凑合看看还不错很精彩 (1 人评了分, 平均分: 5.00 )
Loading...
本站文章来自互联网一线技术博客,若有侵权,请联系我们:若谷技术学院 » 视频/音频处理FAQ & 调用百度API把语音转为文本(speech to text by Baidu api)
关注若谷技术,获得个性化即时架构文章推送

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

全球互联网技术架构,前沿架构参考

联系我们博客/网站内容提交