Python 进行音频视频处理的相关实践。如:
pydub:通过简单、简洁的高层接口来操作音频文件。dejavu:音频指纹提取和识别librosa:强大的 Pythony 语音信号处理库。用于音频、音乐分析、处理和些常见的时频处理、特征提取、绘制声音图形等pyaudioanalysis:音频分析、特征提取工具scikit-video:SciPy 视频处理常用程序SpeechRecognition:采用离线的 pocketSphinx,得到了一个智障的语音转文字工具。OUTPyOpenGL:封装了 OpenGL 应用程序编程接口,能进行二维和三维图像处理。
概述
流式缓冲
- 应用:视频打开即可观看,进度条随播放持续加载
- 缓冲是指将数据预加载到内存保留区(或称为缓冲区)的过程。
- 先下载一定的量,在看的时候,流媒体的下一部分在后台加载,对观看无影响
pydub
pydub:通过简单、简洁的高层接口来操作音频文件。
1 2 3 4 5
| sudo pacman -S espeak
pip install pydub # Successfully installed pydub-0.25.1
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
import pyttsx3 as pyttsx engine = pyttsx.init() voices = engine.getProperty('voices')
rate = engine.getProperty('rate') engine.setProperty('rate', rate+100)
volume = engine.getProperty('volume') engine.setProperty('volume', volume+0.25)
engine.say(""" 日照香炉生紫烟, 遥看瀑布挂前川。 飞流直下三千尺, 疑是银河落九天。 """) engine.runAndWait()
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| import pyaudio
def get_audio(output_file_path): p = pyaudio.PyAudio() stream = p.open(format=pyaudio.paInt16, channels=1, rate=16000, input=True, frames_per_buffer=1024)
frames = [] print('开启录音...') RECORD_SECONDS = 5 for i in range(0, int(16000 / 1024 * RECORD_SECONDS)): data = stream.read(1024) frames.append(data) stream.stop_stream() stream.close() p.terminate()
wf = wave.open(output_file_path, 'wb') wf.setnchannels(CHANNELS) wf.setsampwidth(p.get_sample_size(FORMAT)) wf.setframerate(RATE) wf.writeframes(b''.join(frames)) wf.close()
|
dejavu
dejavu:音频指纹提取和识别
librosa
librosa:强大的 Pythony 语音信号处理库。用于音频、音乐分析、处理和些常见的时频处理、特征提取、绘制声音图形等
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| load()
resample()
stft()
amplitude_to_db()
hz_to_mel()
|
pyAudioAnalysis
pyaudioanalysis:音频分析、特征提取工具
scikit-video
scikit-video:SciPy 视频处理常用程序
moviepy:一个用来进行基于脚本的视频编辑模块,适用于多种格式,包括动图 GIFs
SpeechRecognition
SpeechRecognition:采用离线的 pocketSphinx,得到了一个智障的语音转文字工具。OUT
PyOpenGL
PyOpenGL:封装了 OpenGL 应用程序编程接口,能进行二维和三维图像处理。
pyaudo
pyaudio:音频相关操作软件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| chunk = 256 format = pyaudio.paInt16 channels = 1 rate = 8000 record_seconds = 10 WAVE_OUTPUT_FILENAME = filepath p = pyaudio.PyAudio()
stream = p.open(format=format, channels=channels, rate=rate, input=True, frames_per_buffer=chunk) frames = [] for i in range(0, int(rate / chunk * record_seconds)): data = stream.read(chunk) frames.append(data) print(frames) print("*" * 10, "录音结束\n")
stream.stop_stream() stream.close() p.terminate()
|