python读取音频生成波形图
时间: 2023-08-21 17:04:38 浏览: 224
你可以使用Python的音频处理库来读取音频文件并生成波形图。一个常用的库是librosa。下面是一个简单的示例代码:
```python
import librosa
import librosa.display
import matplotlib.pyplot as plt
# 读取音频文件
audio_path = 'path_to_audio_file.wav'
waveform, sample_rate = librosa.load(audio_path)
# 生成波形图
plt.figure(figsize=(14, 5))
librosa.display.waveplot(waveform, sr=sample_rate)
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.title('Waveform')
plt.show()
```
在代码中,你需要将`path_to_audio_file.wav`替换为你实际的音频文件路径。这段代码使用`librosa.load()`函数读取音频文件,并返回音频的波形数据和采样率。然后,使用`librosa.display.waveplot()`函数将波形数据绘制成波形图,并使用Matplotlib库进行可视化展示。
希望这可以帮到你!如有其他问题,请随时提问。
相关问题
python生成语音时域波形图的代码
你可以使用Python中的`librosa`库来生成语音的时域波形图。以下是一个简单的示例代码:
```python
import librosa
import librosa.display
import matplotlib.pyplot as plt
# 读取音频文件
y, sr = librosa.load('your_audio_file.wav')
# 生成时域波形图
plt.figure(figsize=(12, 4))
librosa.display.waveplot(y, sr=sr)
plt.title('Waveform')
plt.xlabel('Time (seconds)')
plt.ylabel('Amplitude')
plt.show()
```
其中,`librosa.load()`函数用于读取音频文件,返回音频数据和采样率。`librosa.display.waveplot()`函数用于生成时域波形图。`plt`部分则是用于绘制图像的设置。
用python生成一边录音一边显示波形的程序
以下是一个简单的用Python生成一边录音一边显示波形的程序:
```python
import pyaudio
import numpy as np
import matplotlib.pyplot as plt
# 设置音频参数
CHUNK = 1024 # 每次读取的音频数据大小
FORMAT = pyaudio.paInt16 # 音频格式
CHANNELS = 1 # 声道数
RATE = 44100 # 采样率
# 初始化PyAudio
p = pyaudio.PyAudio()
# 打开音频流
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
# 创建一个用于显示波形的图形对象
fig, ax = plt.subplots()
x = np.arange(0, 2 * CHUNK, 2)
line, = ax.plot(x, np.random.rand(CHUNK), '-', lw=2)
# 设置图形属性
ax.set_ylim(-32768, 32767)
ax.set_xlim(0, CHUNK)
plt.setp(ax, xticks=[0, CHUNK, 2 * CHUNK], yticks=[-32768, 0, 32767])
# 开始录音和显示波形
while True:
# 读取音频数据
data = stream.read(CHUNK, exception_on_overflow=False)
# 将二进制数据转换为numpy数组
data_np = np.frombuffer(data, dtype=np.int16)
# 更新波形数据
line.set_ydata(data_np)
# 更新图形
fig.canvas.draw()
fig.canvas.flush_events()
```
这个程序使用PyAudio库实现音频录制,使用matplotlib库实现波形的实时显示。程序中的while循环不断读取音频数据,将数据转换为numpy数组,更新波形数据,然后更新图形。注意,程序中的波形数据y轴范围为-32768到32767,这是16位音频数据的范围。如果要处理其他格式的音频数据,需要相应地调整波形数据的范围。
阅读全文