我让本地的语言模型控制我的视频门铃——这可能是智能摄像头的未来
一些Ring门铃可以使用人工智能功能在你不在家时与访客互动。我放弃了我的Ring门铃,换成了完全本地运行的Reolink门铃,但我想知道是否可以使用本地大语言模型重现类似的功能。我部分成功了。
我希望我的门铃能做的事情
人工智能驱动的礼宾服务
这个想法看起来相当合理。当有人按门铃时,如果家庭助手检测到家里没人,门铃应该向来访者说明家里没人,并询问他们的姓名和来访原因。然后,它应听取回应,处理他们所说的话,并作出相应的回应。
使用基于云的语言大模型(LLM),这似乎是一个现实的目标。将文本转换为语音以及将语音转换为文本,使用基于云的服务足够简单。LLM将处于中间位置,将来电者所说的话作为输入,并生成由门铃发声的回应。
我知道用本地的语言模型做这件事会更有挑战性。我的硬件比较弱,只能运行较小的模型,而这些模型可能无法胜任。我觉得值得一试,看看是否能把这一切都在本地运行起来。
我如何设置它
TTS输出,Whisper输入,Ollama居中
我需要三个主要组件来使这个系统工作。我需要一种将文本转换为语音(TTS)的方法,这样我的门铃就可以向来访者朗读。我需要一种将语音转换为文本(STT)的方法,这样来访者说的任何话都可以转换成书面文本以传递给大型语言模型(LLM)。我还需要一种方法来运行本地的大型语言模型,这将成为整个操作的核心智能。
值得庆幸的是,Home Assistant 对每个组件都有一些很好的选项。Piper 是一个本地 TTS 引擎,可以将书面文本转换为我可以通过门铃播放的语音音频。它完全本地运行,并且足够轻量,可以在 Raspberry Pi 4 上运行。
Whisper 提供了等效的本地语音转文本(STT)组件。它可以将我门铃记录的通话者说话的音频转换成文本,我可以将其传递给本地的 LLM。同样,它完全在本地运行,这也是我这个项目的目标。
拼图的最后一块是 Ollama。这是一个允许你在自己的硬件上运行本地大型语言模型的工具。你可以使用一个 Home Assistant 集成将 Ollama 连接到 Home Assistant。
瓶颈在于你使用的大型语言模型(LLM)的能力。较弱的硬件只能运行较小、能力较弱的模型,而你尝试运行的模型越大,响应速度可能就越慢。我不得不使用一个相当小的模型,以确保生成响应的时间不会太长。
现实没有达到我的期望
概念很好,执行不行
我花了一些时间来设置好一切。像往常一样,在 Home Assistant 上,其他人已经完成了大部分艰难工作;有一个有用的 GitHub Gist 解释了如何通过我的 Reolink 门铃播放音频和 TTS,这非常有用。
我在音频捕捉开始时遇到了一些问题,因为门铃的语音问候仍在播放,这搞得一团糟,但最终还是找到了解决方法。
我想法的最初部分运作得很好。当有人按门铃时,LLM 会生成一个口语问候,通过门铃扬声器播放。它会解释大家都不在,并询问来访者的姓名及来意。
然后门铃会记录他们的口头回应,语音转文本(STT)会将其转换为文字。到目前为止,一切顺利。
问题在于,试图与人工智能驱动的门铃进行双向对话根本行不通。这个小型大语言模型会感到困惑并开始说胡话,而且回应传回来的速度太慢。
看起来这个概念如果由一个足够强大的大型语言模型来运行,效果会好得多。然而,在我中彩票之前,我只能将就现有的东西。
我建立了一个可行的替代方案
这实际上是一个相当不错的配置
由于主要的难点是尝试与来电者进行对话,我干脆删除了流程中的那部分。相反,当来电者提供他们的姓名和来电原因时,语音转文本(STT)会将其转换为文本,并将该文本作为通知发送到我的手机。然后门铃会说它会转达信息,并结束对话。
这意味着每当有人在我们不在家时按门铃,我都会收到一条通知,告诉我是谁以及他们为什么来。大多数时候它运行得相当不错,只是在出现问题时偶尔会弹出一些略显搞笑的通知。不过在大多数情况下,它确实是一个非常有用的功能。
这就是世界的发展方向
现在的趋势是人工智能在所有事物中的应用,而且看起来短期内不会减缓。虽然 Ring 的人工智能礼宾服务很有用,但该公司在隐私方面的声誉并不是很好。好消息是,通过一些努力,至少可以在本地完全重现这些功能的部分内容。



