You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同时播放录制20kHz/10kHz音频失败,仅能录制人声求助

问题分析与解决方案

核心原因排查

你遇到的问题主要由以下几点导致:

  1. 硬件频率响应限制

    • 多数笔记本扬声器的有效输出上限在16kHz-18kHz左右,20kHz信号根本无法被播放出来;10kHz虽在理论范围内,但消费级麦克风的高频拾音灵敏度会大幅下降,加上笔记本内部音频回路可能存在低通滤波,最终导致录制不到信号。
    • 人声频率集中在200Hz-8kHz,刚好落在硬件最优响应区间,因此能正常录制。
  2. 信号格式不匹配
    sd.playrec默认期望输入float32类型的音频信号,而你生成的audio_signal是float64类型,可能引发播放异常或录制失败。

  3. 同步缓冲设置不足
    默认缓冲参数下,高频信号的播放与录制同步容易出现偏差,导致录制失效。


修正后的代码

针对上述问题调整后的代码如下:

import numpy as np
import sounddevice as sd
import librosa
import librosa.display
import matplotlib.pyplot as plt

SAMPLE_RATE = 44100  
FREQUENCY = 10000  
DURATION = 5  
AMPLITUDE = 0.5  

def play_record_stereo(chirp_signal, sample_rate):
    # 设置缓冲块大小,优化同步稳定性
    recording = sd.playrec(
        chirp_signal,
        samplerate=sample_rate,
        channels=1,
        dtype='float32',  # 匹配sounddevice默认格式
        blocksize=1024
    )
    sd.wait()
    return recording[:, 0]

# 生成float32格式的音频信号
t = np.linspace(0, DURATION, SAMPLE_RATE * DURATION, False, dtype=np.float32)
audio_signal = AMPLITUDE * np.sin(FREQUENCY * 2 * np.pi * t).astype(np.float32)

# 播放并录制
recording1 = play_record_stereo(audio_signal, SAMPLE_RATE)
x = recording1

# 波形与频谱可视化
plt.figure(figsize=(14,5))
librosa.display.waveshow(x, sr=SAMPLE_RATE)
plt.title('录制波形')

X = librosa.stft(x)
Xdb = librosa.amplitude_to_db(abs(X))
plt.figure(figsize=(14,5))
librosa.display.specshow(Xdb, sr=SAMPLE_RATE, x_axis='time', y_axis='hz')
plt.colorbar()
plt.title('线性刻度频谱图')

plt.figure(figsize=(14, 5))
librosa.display.specshow(Xdb, sr=SAMPLE_RATE, x_axis='time', y_axis='log')
plt.colorbar()
plt.title('对数刻度频谱图')
plt.show()

额外调试建议

  • 单独测试播放:用sd.play(audio_signal, SAMPLE_RATE),同时用手机音频分析APP(如Audio Analyzer)检测是否有高频信号输出。
  • 查看设备信息:运行print(sd.query_devices()),确认输入输出设备的支持格式与频率响应。
  • 降频测试:将频率降到8kHz以内,验证硬件能否正常处理该频段信号。
  • 尝试软件内录:开启系统内录功能(捕获系统输出而非麦克风输入),避免硬件拾音限制。

内容的提问来源于stack exchange,提问作者alireza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 20:33:39