Python中如何模拟麦克风输入或音频输入?
用途是:在电脑上打电话给别人,将文件转语音,输送过去
Python中如何模拟麦克风输入或音频输入?
你这是打算窃密? 5 年起的噢
要模拟麦克风输入,最直接的方法是生成音频数据并通过pyaudio等库的输入流播放。下面是一个完整示例,它生成1kHz正弦波作为模拟的麦克风输入:
import pyaudio
import numpy as np
import time
# 音频参数
SAMPLE_RATE = 44100
DURATION = 5 # 秒
FREQUENCY = 1000 # 1kHz正弦波
def generate_sine_wave(freq, sample_rate, duration):
"""生成正弦波音频数据"""
t = np.linspace(0, duration, int(sample_rate * duration), False)
audio = np.sin(2 * np.pi * freq * t) * 0.5 # 0.5振幅避免削波
return audio.astype(np.float32)
def simulate_mic_input():
"""模拟麦克风输入流"""
p = pyaudio.PyAudio()
# 打开输出流(模拟输入设备)
stream = p.open(format=pyaudio.paFloat32,
channels=1,
rate=SAMPLE_RATE,
output=True, # 关键:设为输出流来"注入"音频
frames_per_buffer=1024)
# 生成测试音频
audio_data = generate_sine_wave(FREQUENCY, SAMPLE_RATE, DURATION)
print(f"开始模拟{int(DURATION)}秒的{FREQUENCY}Hz正弦波输入...")
# 分块播放音频,模拟实时输入
chunk_size = 1024
for i in range(0, len(audio_data), chunk_size):
chunk = audio_data[i:i + chunk_size]
stream.write(chunk.tobytes())
stream.stop_stream()
stream.close()
p.terminate()
print("模拟完成")
if __name__ == "__main__":
simulate_mic_input()
关键点:
- 使用
pyaudio打开一个输出流来模拟输入设备 - 生成正弦波等测试信号作为音频源
- 分块写入流中以模拟实时音频输入
实际应用场景:
- 测试语音识别系统时注入测试音频
- 开发阶段模拟麦克风输入进行调试
- 自动化测试中提供可控的音频输入
替代方案:
- 使用
sounddevice库的InputStream配合虚拟音频电缆 - 在Linux上用
parec/pacat管道重定向 - 创建虚拟音频设备(如Windows的VB-Audio)
一句话建议:根据你的具体测试需求选择合适的模拟方法。
将文件转成二进制,101010010100101010101,然后对着电话念 2333
写驱动,加一个虚拟音频输入设备
https://www.xfyun.cn/services/offline_tts
现在有很多语音合成的 API,你可以试一下
两边各自购买一台调制解调器 windows 下新建一个允许拨入远程连接然后组网你就可以享受 38.4-56 kbps 的网上冲浪了
文件转语音,你这有点骚
你是要转文件内容?能保证语音识别准确吗?
还不如弄个朗读设备帮你读,旁边放个麦连电脑
我记得 mac 上 soundsiphon 可以模拟声卡控制输入输出不知道有没有用。。。
给你个思路,不用模拟的方式而是直接从打电话的这个工具里逆出协议然后直接发音频流。
你看看 Cisco Jabber 是不是用 SIP 协议注册的是的话就按照楼上的方式操作
另外邮件客户端如果有遗漏的话可以自己实现一个协议都是开放的
我考虑过这个方案,但是并不知道怎么逆出协议。。
电话里读邮件吗,这个点子有点骚啊,关注.
这个需要语音很真实吗? 如果不需要那么真实 可以自己录啊 拼音就那么点 四个声调加个轻声 做个映射 稍微做点预处理
然后调用你那个电话的输入接口 把录好的音频文件一个个输入 可还行

