Unity也能使用语音跟ai聊天了?Whisper + NobodyWho 小白教程教你如何在unity实现llm的搭建

张开发
2026/4/18 19:39:35 15 分钟阅读

分享文章

Unity也能使用语音跟ai聊天了?Whisper + NobodyWho 小白教程教你如何在unity实现llm的搭建
大家想必都知道llm是“大语言模型”Large Language Model的缩写就是像GPT-4、DeepSeek、文心一言这类能够理解、生成人类语言的AI模型而这种模型一般都只能在云端网页调用会玩的人通过ollma本地化下载然后再本地进行一个对话不过这些都太old被人讲过了我们讲的特别的如何通过unity引擎插件实现用语音聊天跟ai模型在引擎里面互动。我们用的工具有以下几个第一个大模型首先unity支持大模型的导入但是最好使用.gguf而非.safetensors结构这里我们直接给出qwen的gguf链接大家魔法上网进入hugging进行下载因为unity如果你想导出包不是那么大那3g也够了这里是千文的一个gguf的模型链接huggingface.co然后呢我们要第二个工具whisper插件这个插件大家直接去package manager选择git url进行下载https://github.com/Macoron/whisper.unity.git?path/Packages/com.whisper.unity这个主要负责对应的语音识别嵌入插件下载完成后我们并不能直接开始我们在组件搜索whispermanager给我们新建一个空物体挂载挂载后会发现一个东西Model,这个有个path路径他指向了StreamingAsset一个文件但是这是空的这是为什么因为我们还需要语音识别模型语音模型为bin文件而负责语音模型我直接给大家给出链接这个是small模型大家可以查看huggingface越大越精确性能消耗越高https://huggingface.co/ggerganov/whisper.cpp/blob/main/ggml-small.bin当然如果想下载其他模型也可以直接搜索ggml,下载后放入文件夹如图所示然后配置文件路径在刚刚的组件中设置path为你的名字如果放子文件加上/子文件名字/你的bin文件名字我们完成了配置之后就可以编写一个方法进行调用Whisper.unity 提供了MicrophoneRecord组件通过事件通知录音结束并返回音频数据。核心调用如下microphoneRecord.OnRecordStop OnRecordStop;private async void OnRecordStop(AudioChunk recordedAudio){var res await whisperManager.GetTextAsync(recordedAudio.Data,recordedAudio.Frequency,recordedAudio.Channels);string playerSpeech res.Result;// 将识别文本发送给 AICallAI(playerSpeech);}大家脚本调用仅需通过 microphoneRecord.StartRecord();开始录制 microphoneRecord.StopRecord();停止录制编写方法在按钮开始适合开始录制再次点击停止实现ai输入后传递文字方法如下var res await whisperManager.GetTextAsync(recordedAudio.Data, recordedAudio.Frequency, recordedAudio.Channels);string playerSpeech res.Result;await CallAIAsync(playerSpeech);通过whisperManager.GetTextAsync()从而实现这个录制转文字我们完成语音后该实现如何语音转文字传递给ai这个内嵌ai模型的插件那就是nobodywho我们需要在资源商店下载Local LLMs - made easy。商店下载完成导入包内我们会获得几个脚本我们创建一个新空物体放置这个插件的内置脚本分别是nobodywhochatnobodywhomodel如图所示这里就放置我们的大模型刚刚的qwen的文件路径browse查找即可设置完毕后我们编写代码首先通过一个text接收到刚刚ai语音的代码然后里面nobody方法的nobodyWhoChat.Say(playerMessage) → 发送给大模型然后实现一个语音转文字具体流程如下玩家按下 P 键 / 点击按钮↓StartRecording() → 开始录音↓玩家松开 P 键 / 再次点击按钮↓StopRecording() → 停止录音↓OnRecordStop自动触发↓whisperManager.GetTextAsync() → 语音转文字playerSpeech↓CallAIAsync(playerSpeech)↓nobodyWhoChat.Say(playerMessage) → 发送给大模型↓responseUpdated 事件 → 实时更新 AI 回复框打字机效果当然ui方面的配置我们就不多赘述大致逻辑就是这样在我们配置好了对应的插件就可以调用方法实现我们的ai语音转文字让ai回答问题如果你也想尝试一下我会给出完整的代码片段链接给各位大家按照这个配置即可语音转文字脚本-CSDN博客

更多文章