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

Linux下ALSA多通道USB声卡通道输出顺序不一致问题求助

Startech ICUSBAUDIO7D USB声卡ALSA 8通道输出映射顺序不稳定问题

我使用Startech ICUSBAUDIO7D USB声卡(通过lsusb识别为ID 0d8c:0102 C-Media Electronics, Inc. CM106 Like Sound Device),在Linux系统中基于ALSA进行8通道输出编程。该声卡配有4个立体声接口,我已连接示波器用于调试。

当前问题:每次运行程序时,通道输出的映射顺序不一致。例如首次运行时第一个立体声接口输出的振幅为(0, 0.125),但下一次运行时该接口可能输出(0.75, 0.25),且通道并非按接口成对映射。

以下是我生成50Hz正弦波的Python代码(为便于示波器识别,每个通道设置了不同振幅):

import numpy as np
import alsaaudio

def sine_wave(amplitude=1, freq=50, sample_rate=48000):
    wave_len = sample_rate/freq
    samples = (amplitude * 32767 * np.sin(2 * np.pi * np.arange(wave_len) * freq / sample_rate)).astype(np.int16)
    return samples

def eightchan(freq=50, sample_rate=48000):
    wave_len = sample_rate//freq
    frames = np.zeros((wave_len, 8), dtype=np.int16)
    samples = sine_wave()
    for c in range(8):
        frames[:wave_len,c] = samples[:wave_len]*(c/8)
    return frames.tobytes()

if __name__ == '__main__':
    pcm = alsaaudio.PCM(device='surround71:CARD=ICUSBAUDIO7D,DEV=0', format=alsaaudio.PCM_FORMAT_S16_LE, channels=8, rate=48000, type=alsaaudio.PCM_PLAYBACK, periodsize=960, periods=1)
    frames = eightchan()
    while True:
        pcm.write(frames)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 19:37:05