精品国产一区在线_av无码中文字幕无码王_天海翼三点刺激高潮不停_好硬好大好爽视频_欧美高清一区三区在线专区_香蕉黄色片

  • 回復
  • 收藏
  • 點贊
  • 分享
  • 發新帖

【 DigiKey DIY原創大賽】基于樹莓派5的llm本地語音助手系統

引言

隨著人工智能技術的廣泛應用,各種專門為AI設計的硬件設備正迅速涌現。這些設備不僅提升了AI應用的性能,還將其帶入更多生活和工作場景。

比如最先乘著大語言模型的東風,在互聯網上火起來的rabbit R1硬件。其擁有一塊觸摸屏(官方設定為非觸摸,聽說可以修改系統設置變成可以識別觸屏),以及上下推拉式的對話按鈕,同時還配備了一個360度攝像頭。我們在rabbit R1官網上可以查看到,其擁有一些很酷的小技能。如語音對話,物品識別,雙向翻譯,網絡購物之類的。其在系統級別集成大語言模型的接口,將設備傳感器獲取的多模態數據(圖像,語言,文字等等,甚至是按鈕操作),在本地進行一些低算力的應用,如果需要高算力的應用支持則需要接入網絡,借助服務器的算力識別。

另外最近各個公司都在積極推出結合自家大模型技術的ai硬件產品,比如智能戒指,智能鼠標之類的。其中最引入矚目的便是字節跳動公司計劃推出的ai眼鏡、智能耳機產品,相關計算接入了自家的豆包大模型。處理一些語音對話,實時翻譯之類的任務。通過在硬件上搭載的傳感器,收集相關語音輸入,把ai推理所需要的計算放在云端,云端處理完過后將處理結果返回。當然本地也可以執行一些算力低的推理任務,將一部分計算上傳至云,此時如何將調度部分任務卸載至云的問題亟待解決。

另外就是一些將ai計算加速硬件,嵌入到產品中。比如npu加速,以及最近很火的ai pc名詞。

為了支持大規模AI計算,硬件廠商推出了大量適合邊緣設備和嵌入式應用的AI芯片。例如:

谷歌 Coral:基于 Edge TPU,專為邊緣AI任務設計,支持低功耗運行和快速模型推理。英偉達 Jetson 系列:提供強大的GPU性能,用于邊緣設備上的計算密集型AI任務。自家廠商推出的npu,適用于自家硬件平臺,在一些特定任務上有高效加速作用。

此前在llama.cpp剛出來的時候,本人在樹莓派4B上測試推理結果,一個7B參數的模型,推理速度大概是每20s一個token,速度完全不能夠實用?,F如今,各種場景下的應用ai模型發展的都十分迅速,技術更迭也很快,如今已經出現了很多易于配置,應用大模型的一套解決方案。比如dify,ollama之類的大模型應用框架。直接在應用中就可以拉取模型,處理輸入輸出。剛好感謝得捷電子以及電源網聯合推出的diy活動,希望能通過這個機會體驗一下ai應用,嘗試將大模型更好地、方便地帶入生活之中。

項目目標

計劃是基于樹莓派實現一個本地語言助手,數據保存本地保護隱私。

tip:但在實際開發過程中,覺得ollama的性能在樹莓派上的表現實在還是不夠,需要更換一些更快的推理引擎。

語音識別:通過 SenseVoice 模型將語音轉化為文字,支持多種語言的語音輸入。

自然語言理解與生成:通過調用 Ollama API 的 Qwen 模型生成智能對話,理解用戶問題并給予自然語言的響應。

語音輸出:通過 pyttsx3 將 Qwen 模型生成的文字回答轉換為語音,返回給用戶。

喚醒功能:實現按鍵和語音(通過 Snowboy)喚醒功能,允許用戶通過不同方式啟動語音助手。

項目材料

樹莓派 5:主控板,負責運行所有邏輯。

USB 聲卡 + 麥克風:用于高質量語音輸入以及輸出。樹莓派是自帶有i2s接口的,但是為了方便還是用的usb免驅的。

軟件

操作系統:基于 ubuntu 24。

語音處理ASR:使用 阿里推出的sensevoice模型,支持多國語言,擁有情感分析

TTS:基于 pyttsx3

LLM 推理:使用ollama大模型應用框架,進行本地語音模型推理

安裝ollama推理框架

Ollama 是一個開源框架,專注于本地部署大型語言模型(LLM),讓用戶無需依賴云服務即可運行強大的 AI 應用。它通過容器化模型管理和輕量化的 API 接口,支持聊天交互、文本生成、模型定制等功能。

curl https://ollama.ai/install.sh | sh

ollama并不支持使用rapberrypi5的gpu處理,雖然自帶的gpu很羸弱。樹莓派5可以裝配pcie擴展的ai加速 kit。

ollama pull tinyllama //拉取模型

ollama list //顯示本地模型

ollama有一套很完整的大模型調用框架。

ollama有對話模式,以及可以調用api。但在我實際運行中,樹莓派上本地調用api返回回答非常慢。

可以通過簡單的 HTTP 請求調用 Ollama 提供的 API 生成文本。

import requests

# 定義請求的 URL 和頭部信息
url = "https://api.ollama.com/v1/generate"
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json",
}

# 定義請求的 payload
payload = {
    "model": "qwen",  # 使用的模型名稱,支持多個模型
    "input": "Hello, how are you?",  # 輸入的對話或文本
}

# 發送請求
response = requests.post(url, json=payload, headers=headers)

# 輸出結果
if response.status_code == 200:
    data = response.json()
    print("Response:", data['text'])  # 返回的生成文本
else:
    print(f"Error: {response.status_code}")

使用不同的模型

除了 qwen,Ollama 還支持其他模型。想使用不同的模型,只需在命令中指定模型名稱:

ollama run <model_name> "<input_text>"

例如,如果您想使用 llama 模型進行文本生成,可以執行:

ollama run llama "What is the meaning of life?"

模型列表

可以列出 Ollama 支持的所有可用模型:

ollama models

此命令會列出當前可以使用的

安裝阿里的sencevoice

SenseVoice 是一個語音基礎模型,具有多種語音理解功能,包括自動語音識別 (ASR)、口語識別 (LID)、語音情感識別 (SER) 和音頻事件檢測 (AED)。

安裝為python模塊

git clone https://github.com/alibaba/FunASR.git && cd FunASR
pip3 install -e ./

tts可以使用pip 下的pyttsx3

喚醒進行錄音

# 按鍵喚醒線程
def button_wakeup():
    import keyboard
    global wakeup_flag
    while True:
        if keyboard.read_key() == "enter":
            with lock:
                wakeup_flag = True
            print("按鍵喚醒成功!")

# Snowboy 喚醒線程
def snowboy_wakeup(model_path="resources/snowboy.umdl"):
    def detected_callback():
        global wakeup_flag
        with lock:
            wakeup_flag = True
        print("語音喚醒成功!")

    detector = snowboydecoder.HotwordDetector(model_path, sensitivity=0.5)
    print("正在監聽語音喚醒...")
    detector.start(detected_callback=detected_callback)
    detector.terminate()

sencevoice語音轉文字

# SenseVoice 音頻轉錄函數
def recognize_speech_with_sensevoice(audio_data, language="auto"):
    model_dir = "iic/SenseVoiceSmall"
    model = AutoModel(
        model=model_dir,
        trust_remote_code=True,
        remote_code="./model.py",
        vad_model="fsmn-vad",
        vad_kwargs={"max_single_segment_time": 30000},
        device="cuda:0",
    )
    
    # 將錄音傳給模型進行轉錄
    res = model.generate(
        input=audio_data,
        cache={},
        language=language,  # "zh", "en", "yue", "ja", "ko", "nospeech"
        use_itn=True,
        batch_size_s=60,
        merge_vad=True,
        merge_length_s=15,
    )
    text = rich_transcription_postprocess(res[0]["text"])
    return text

調用ollama的api功能進行推理

# Ollama API 調用
def call_ollama(prompt, api_url="http://localhost:8000/api/generate"):
    headers = {"Content-Type": "application/json"}
    payload = {"prompt": prompt, "model": "qwen"}
    try:
        response = requests.post(api_url, json=payload)
        if response.status_code == 200:
            return response.json().get("text", "No response.")
        else:
            return f"Error: {response.status_code}"
    except Exception as e:
        return f"Exception occurred: {str(e)}"

這里的推理速度很奇怪,在ollama進入對話模式的時候,推理速度是很快的,但是調用api的時候推理十分慢。感覺應該是cpu占用問題,ollama的cpu占用較大,很影響效率。

錄音功能

# 錄音功能
def record_audio(duration=5, sample_rate=16000):
    print("開始錄音...")
    audio = sd.rec(int(duration * sample_rate), samplerate=sample_rate, channels=1, dtype=np.int16)
    sd.wait()
    print("錄音結束。")
    return audio

調用tts語音

# 全局變量
wakeup_flag = False
lock = threading.Lock()

# 初始化語音合成
def speak(text):
    engine = pyttsx3.init()
    engine.setProperty('rate', 150)  # 設置語速
    engine.setProperty('voice', 'english')  # 設置語音
    engine.say(text)
    engine.runAndWait()

語音本來是也想用阿里的cozyvoice模型的,但是看了一下好像對arm支持不是很好,并且自帶了英偉達顯卡的加速,如果不能用加速的話本地跑是非常非常慢的,對于想實時對話來說不太現實。可以考慮在服務器部署然后調用相關的api。

總結:

在本項目中,我開發了一個基于大語言模型(LLM)的語音助手系統,使用了Ollama API來處理文本生成任務,結合 SenseVoice 進行語音轉錄,最終使用 pyttsx3 進行語音合成,使用了按鍵或者是snowboy進行喚醒錄音。

項目不足:推理速度較慢: 使用 Ollama API 進行大語言模型推理時,響應速度不盡如人意。雖然 OLLama 提供了便捷的接口,但由于網絡延遲及模型本身推理的時間,導致響應速度較慢,尤其是在進行長文本生成時。

語音識別的準確性問題: 盡管 SenseVoice 支持多語言轉錄,但在嘈雜環境或發音不清晰時,識別效果仍存在一定局限性,尤其是在口音多樣化的情況下。

改進方向:本地部署優化: 為了提升推理速度,考慮將 Ollama 或類似的大語言模型替換為其他支持大模型的推理引擎llama.cpp,這樣可以提升響應速度。

由于在大模型應用做實踐的比較少,ollama在算力高的平臺是非常易用的,但是跑在樹莓派5上性能就有點不盡人意。這也讓我認識到,在項目初期制定方案的時候,應該參考網上已有的用例,看是否可行并且高效。在邊緣設備上一般采用性能更好的使用c++推理的框架。

全部回復(0)
正序查看
倒序查看
現在還沒有回復呢,說說你的想法
主站蜘蛛池模板: 熟女人妻aⅴ一区二区三区60路 | 蜜桃视频 精品区 | 狠狠色丁香婷婷综合最新地址 | 欧美老妇交乱视频 | 光棍影院一区二区三区 | 农田丰满艳肉妇hd | 青苹果乐园电视在线看 | 成年视频免费观看 | 麻豆精品在线 | WWW日本少妇 | 免费伦费一区二区三区四区 | 热国产热综合 | 成年人高清视频在线观看 | 女子被狂揉下部羞羞图片 | 春雨影视剧在线播放 | 又黄又湿又免费视频 | 久久影视在线观看 | 在线观看国产黄 | 爱爱视频在线看 | 短裙公车被直接进入被c视频在线 | 亚洲AV成人精品日韩一区 | 欧美理论在线观看 | 国产医生护士在线播放 | 国产综合在线观看视频 | 精品多人p群无码 | 日本乱码一区二区三区芒果 | 人妻熟妇乱又伦精品视频 | 在线精品免费观看一区 | 国产成人精品手机在线观看 | 久久国产福利国产秒拍 | 欧美www视频 | 国产综合精品一区二区三区 | 最新国产视频 | 久久九九看黄一片 | 久久久91麻豆精品国产一区 | 亚洲射情 | 日韩人妻无码精品一专区二区三区 | 欧洲精品久久 | 成人vagaa免费观看视频 | 干大奶少妇| 久久国产精品嫩草影院的推荐理由 |