Python librosa代码语法错误求助:specshow行报SyntaxError
解决Librosa音频处理代码的语法错误
原错误代码
C = librosa.cqt(y, sr=sr, n_bins=84) print('Transform shape', C.shape) log_power = librosa.amplitude_to_db((np.abs(S))(C**2, ref=np.max) librosa.display.specshow(log_power, x_axis='time', y_axis='mel', cmap=cm.jet)
错误原因
第3行存在两处核心问题:
- 括号不匹配:
librosa.amplitude_to_db()的调用括号未正确闭合,且(np.abs(S))(C**2的写法完全错误,直接导致Python语法解析失败,进而牵连后续语句被判定为无效语法。 - 变量名笔误:前面通过
librosa.cqt()生成的变量是C,但代码中误用了未定义的S。
修正后的代码
import librosa import numpy as np import matplotlib.cm as cm import librosa.display # 假设y(音频信号)和sr(采样率)已提前定义 C = librosa.cqt(y, sr=sr, n_bins=84) print('Transform shape', C.shape) # 修正括号匹配、变量名错误,正确计算CQT结果的对数分贝功率谱 log_power = librosa.amplitude_to_db(np.abs(C)**2, ref=np.max) # 适配CQT的频率轴,建议使用cqt_note或cqt_hz,若需梅尔刻度需额外转换 librosa.display.specshow(log_power, x_axis='time', y_axis='cqt_note', cmap=cm.jet)
内容的提问来源于stack exchange,提问作者Isha Pathania
相关产品推荐
相关产品推荐

