开发带麦克风输入的Jarvis聊天机器人遇jarvis_api模块缺失错误求助
解决
jarvis_api模块找不到的问题 问题原因
你安装的JarvisAI和npm的api-jarvis都不是代码依赖的jarvis_api模块。这段代码是针对**NVIDIA Jarvis(现更名NeMo Conversational AI)**的语音识别服务,jarvis_api是从Jarvis官方提供的GRPC proto文件生成的Python客户端模块,并非PyPI上的第三方包。
解决步骤
1. 卸载无关依赖
先移除错误安装的包,避免冲突:
pip uninstall -y JarvisAI
npm i api-jarvis是Node.js包,和Python代码无关,可直接删除。
2. 生成jarvis_api模块
需要从Jarvis的官方proto文件生成Python GRPC代码:
- 下载Jarvis的proto文件集合(包含
audio.proto、jarvis_asr.proto等) - 安装
grpcio-tools工具:pip install grpcio-tools - 执行命令生成代码,替换
./proto_dir为你存放Jarvis proto文件的目录:
执行后会生成python -m grpc_tools.protoc -I./proto_dir --python_out=. --grpc_python_out=. ./proto_dir/jarvis_api/*.protojarvis_api目录,包含所需的audio_pb2.py、jarvis_asr_pb2.py、jarvis_asr_pb2_grpc.py文件。
3. 修正代码中的两处错误
你的代码里有两个小问题会导致运行失败:
MicrophoneStream类的__exit__方法中,self.audio_stream应该改为self._audio_stream(变量名定义时带下划线)main函数里的device=args.input_device应该改为device=args.input_devices(命令行参数定义的是--input-devices)
修正后的关键代码片段:
# __exit__方法修正 def __exit__(self,type,value,traceback): self._audio_stream.stop_stream() self._audio_stream.close() self.closed= True self._buff.put(None) self._audio_interface.terminate() # main函数中设备参数修正 with MicrophoneStream(RATE,CHUNK,device=args.input_devices) as stream:
4. 确保Jarvis服务正在运行
代码默认连接localhost:50051,需要确保你已经启动了Jarvis的ASR服务,否则会出现GRPC连接错误。
内容的提问来源于stack exchange,提问作者Abhishek Shahi
相关产品推荐
相关产品推荐

