每天都在头秃 2024-01-30 15:22 采纳率: 96.7%
浏览 32
已结题

Python如何可视化包裹路径

我在用DTW算法对齐两份文件的语音时,有一步任务是可视化包裹路径,但是效果图应该是这样的,我试着操作了几遍没有成功,不知道该怎么做?这样的图片要用什么方式获得?

img


我目前的代码如下:

import librosa
import numpy as np
from fastdtw import fastdtw
import matplotlib.pyplot as plt
#First, upload the file
example_path="./LJ001-0048.wav"
myself_path="./Re_MyVoice.wav"
​
exam_audio,exam_rate=librosa.load(example_path, sr=16000)
my_audio,my_rate=librosa.load(myself_path, sr=16000)
​
#calculate the spec
exam_spect=np.abs(librosa.stft(y=exam_audio,n_fft=exam_rate))
my_spect=np.abs(librosa.stft(y=my_audio,n_fft=my_rate))
​
#use DTW algorithm
distance, path=fastdtw(exam_spect.T, my_spect.T)
​
#Visualize the aligned power spectrogram of the reference speech and my own recording
plt.figure(figsize=(6, 6))
plt.subplot(2, 1, 1)
plt.title('Spectrogram of LJ001-0048.wav')
librosa.display.specshow(librosa.amplitude_to_db(exam_spect), y_axis='log')
plt.colorbar(format='%+2.0f dB')
​
plt.subplot(2, 1, 2)
plt.title('Spectrogram of Re_MyVoice.wav')
librosa.display.specshow(librosa.amplitude_to_db(my_spect), y_axis='log')
plt.colorbar(format='%+2.0f dB')
plt.tight_layout()
plt.show()
​
​
#Visualize the wraped path/map from the DTW algorithm. Here is how the wraped path may look like.
plt.figure(figsize=(6, 6))
b=[]
for i in range(len(path)):
    b.append(np.array( path[i]))
c=np.array(b)
librosa.display.specshow(c, x_axis='time', y_axis='time')
plt.plot(c[:, 1],c[:, 0], color='r')
plt.xlim([0, c.shape[1]])
plt.ylim([0, c.shape[0]])
plt.title('DTW')
plt.colorbar(format='%+2.0f')
plt.tight_layout()
plt.show()

  • 写回答

3条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2024-01-30 18:28
    关注

    【以下回答由 GPT 生成】

    **优化点:**
    当前代码已经可以实现所需的功能,但还可以进一步优化:
    1. 添加必要的注释说明代码的功能和实现步骤。
    2. 使用更具描述性的变量名,减少代码中的硬编码。
    3. 将代码封装为可以复用的函数,以提高代码的可读性和维护性。
    4. 考虑处理异常情况,例如文件不存在或加载失败。
    5. 提供更详细的文档说明,包括函数的输入和输出,以及对所用库和算法的简要介绍。
    


    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月7日
  • 已采纳回答 1月30日
  • 修改了问题 1月30日
  • 创建了问题 1月30日

悬赏问题

  • ¥15 求高通平台Softsim调试经验
  • ¥15 canal如何实现将mysql多张表(月表)采集入库到目标表中(一张表)?
  • ¥15 wpf ScrollViewer实现冻结左侧宽度w范围内的视图
  • ¥15 栅极驱动低侧烧毁MOSFET
  • ¥30 写segy数据时出错3
  • ¥100 linux下qt运行QCefView demo报错
  • ¥50 F1C100S下的红外解码IR_RX驱动问题
  • ¥20 基于matlab的航迹融合 航迹关联 航迹插补
  • ¥15 用Matlab实现图中的光线追迹
  • ¥15 联想笔记本开机出现系统更新界面