77 lines
2.3 KiB
Python
Executable File
77 lines
2.3 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
音频设备测试脚本
|
|
用于测试不同环境下的音频设备访问
|
|
"""
|
|
|
|
import pyaudio
|
|
import sys
|
|
import os
|
|
|
|
def test_audio_access():
|
|
print("🔍 音频设备访问测试")
|
|
print("=" * 50)
|
|
|
|
try:
|
|
p = pyaudio.PyAudio()
|
|
print("✅ PyAudio 初始化成功")
|
|
|
|
# 显示所有音频设备
|
|
print("\n📋 可用音频设备:")
|
|
for i in range(p.get_device_count()):
|
|
info = p.get_device_info_by_index(i)
|
|
if info['maxInputChannels'] > 0:
|
|
print(f" 设备 {i}: {info['name']}")
|
|
print(f" 输入通道: {info['maxInputChannels']}")
|
|
print(f" 默认采样率: {info['defaultSampleRate']}")
|
|
|
|
# 测试16000Hz采样率
|
|
print(f"\n🎵 测试16000Hz采样率访问:")
|
|
|
|
# 测试默认设备
|
|
try:
|
|
stream = p.open(
|
|
format=pyaudio.paInt16,
|
|
channels=1,
|
|
rate=16000,
|
|
input=True,
|
|
frames_per_buffer=1024
|
|
)
|
|
print("✅ 默认设备支持16000Hz")
|
|
stream.close()
|
|
except Exception as e:
|
|
print(f"❌ 默认设备不支持16000Hz: {e}")
|
|
|
|
# 测试pulse设备
|
|
try:
|
|
stream = p.open(
|
|
format=pyaudio.paInt16,
|
|
channels=1,
|
|
rate=16000,
|
|
input=True,
|
|
frames_per_buffer=1024,
|
|
input_device_index=6 # pulse设备
|
|
)
|
|
print("✅ Pulse设备支持16000Hz")
|
|
stream.close()
|
|
except Exception as e:
|
|
print(f"❌ Pulse设备不支持16000Hz: {e}")
|
|
|
|
p.terminate()
|
|
print("\n✅ 音频测试完成")
|
|
|
|
except Exception as e:
|
|
print(f"❌ 音频测试失败: {e}")
|
|
sys.exit(1)
|
|
|
|
def check_environment():
|
|
print("\n🌍 环境信息:")
|
|
print(f"用户: {os.getenv('USER', 'Unknown')}")
|
|
print(f"用户ID: {os.getuid()}")
|
|
print(f"PULSE_SERVER: {os.getenv('PULSE_SERVER', 'Not set')}")
|
|
print(f"XDG_RUNTIME_DIR: {os.getenv('XDG_RUNTIME_DIR', 'Not set')}")
|
|
print(f"DBUS_SESSION_BUS_ADDRESS: {os.getenv('DBUS_SESSION_BUS_ADDRESS', 'Not set')}")
|
|
|
|
if __name__ == "__main__":
|
|
check_environment()
|
|
test_audio_access() |