首页 > 其他分享 >小林同学智能AI大模型语音助手

小林同学智能AI大模型语音助手

时间:2024-07-12 09:11:37浏览次数:11  
标签:树莓 AI 录制 语音 import 小林 wav 唤醒

      闲来无事,想起吃灰的树莓派拿来做点什么,貌似去年还专门买了个麦克风还没怎么用过。正好拿来做个类似小爱智能语音助手的小林同学,现在智能助手不接入大模型都不好意思说出来,当然小林同学没有小爱同学的米家生态功能,后续如果加入多模态图片识别貌似会更有点意思。
      智能助手涉及到的技术主要由:语音离线唤醒、录音、语音识别(Speech-to-Text)、TTS、大模型,在现在这个时候整合这些技术做出个Demo的玩具并没有多少难度。做了些技术调研还有验证马上就动手。下面简单介绍硬件配置、主要代码实现;

树莓派配置

alsamixer 配置 声音大小等 
aplay -l  查看设备情况

修改/etc/asound.conf或.asoundrc
vim .asoundrc

配置默认设备
defaults.pcm.card 1   默认播放设备
defaults.ctl.card 0      默认控制设备
sudo /etc/init.d/alsa-utils restart

录音  arecord -D hw:2,0 -t wav -c 1 -r 44100 -f S16_LE test.wav
  -D hw:2,0 第二个声卡的第一个设备  -f S16_LE 指定了采样格式为 16 位小端   -r 44100 设置了采样率为 44100Hz -c 1 表示使用单声道录音
播放 aplay test.wav 

      语音唤醒—》录音—》语音识别—》大模型—》TTS—》语音播报

语音唤醒

      选了开源的Snowboy作为语音唤醒的实现,Snowboy非常适合在树莓派上使用,非常轻量反应很灵敏。它的唤醒为离线实现并不依赖网络,还可以定制个人唤醒词,如小林同学、Alexa、小爱同学等你想要的任何唤醒词,使用也非常简单。
      录制唤醒词:https://snowboy.hahack.com

from snowboy import snowboydecoder
def hello_callback():
    communicate = edge_tts.Communicate("你好啊",voice)
    asyncio.run(communicate.save("./hello.wav"))
    playsound("hello.wav")
detector.start(detected_callback=hello_callback,
               interrupt_check=interrupt_callback,
               sleep_time=0.03)

detector.terminate()

启动程序  python main.py snowboy/linx.pmdl

语音录制

      最初选了Sounddevice作为录制语音的框架,在录制固定长度音频是并没有问题生成音频文件没什么杂音,但在加了阈值听到声音才开始录制没有声音停止录制的逻辑之后生成音频有嘟嘟嘟嘟的杂音,搞了一两个小时没有解决换了技术方案。
      其实AI助手也不需要听到声音开始录制,只需要在唤醒时录制即可。最终选择了SpeechRecognition作为技术方案,录制效果也不错。

import speech_recognition as sr
import baidu
import json

def rec(rate=16000):
    try:
      r = sr.Recognizer()
      file = "recording.wav"
      with sr.Microphone(sample_rate=rate) as source:
        audio = r.listen(source,timeout=12,phrase_time_limit=6)
      with open(file, "wb") as f:
        f.write(audio.get_wav_data())
        text = json.loads(baidu.tts(file))
        if(text is not None):
            return text.get("result")[0]
        else:
            return None
    except sr.WaitTimeoutError:
        print("录音超时,没有检测到声音。")
    except Exception as e:
        print(f"发生错误: {e}")

语音识别

      想着搞离线语音识别最近有一个OpenAi开源的神器Whisper Live不仅可以对视频进行转为文本还可以进行实时视频转录,如生成视频字幕。在笔记本上试了下效果的确不错,但由于算力硬件原因,在树莓派上效果并不理想一个几秒语音转录就要几十秒。没办法最终换成了百度的在线语音识别。

TTS(Text To Speech)

      文本转语音选择了微软开源的Edge-TTS效果还不错,在树莓派上体验性能还算能接受。

import edge_tts

def generater_wav(msg:str):
    communicate = edge_tts.Communicate(msg,voice)
    asyncio.run(communicate.save("./temp.wav"))
    playsound("temp.wav")

标签:树莓,AI,录制,语音,import,小林,wav,唤醒
From: https://www.cnblogs.com/softlin/p/18297321

相关文章

  • 合宙 Air780E模块 AT 指令 MQTT连接
    固件说明重启模块//txAT+RESET//rxAT+RESETOK^boot.rom'v'!\nRDY^MODE:17,17+E_UTRANService+CGEV:MEPDNACT1+NITZ:2024/07/10,08:33:44+0,0查询模块版本信息//txAT+CGMR//rxAT+CGMR+CGMR:"AirM2M_780E_V1161_LTE_AT"OK基本流......
  • AI与软件开发:伙伴还是对手?
    AI工具现状        在软件开发的现代战场上,生成式人工智能(AIGC)正逐渐从幕后走向台前,成为开发者不可或缺的助手。工具如GitHubCopilot和TabNine,引领了一场生产力革命,让编程变得如同与一位聪明的同事合作般轻松。GitHubCopilot,由GitHub与OpenAI联合打造,能够根据上下文......
  • ‘AI’第二课堂笔记记录(python基础)
    一、miniconda下载链接:https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Windows-x86_64.exe或者去清华大学开源软件镜像站下载https://mirrors.tuna.tsinghua.edu.cn/(开始下载程序后勾选添加到环境变量,一直下一步即可)使用创建环境condacre......
  • 生成式 AI 的新引擎:探索 Amazon EC2 P5 实例与 NVIDIA H100 GPU 的结合
    欢迎来到雲闪世界。人工智能(AI)和机器学习(ML)正以前所未有的速度改变我们的世界。为  欢迎来到雲闪世界。了支持这些技术的进步,计算能力的需求也在不断增加。2023年3月,AWS和NVIDIA宣布了一项深度合作,重点是构建最具可扩展性的按需AI基础设施,专为训练日益复杂的大型语言模型(LLM......
  • AI: 了解语言模型和变换器模型
    引言在现代自然语言处理(NLP)领域,语言模型和变换器模型占据了重要位置。这些模型使得计算机能够理解和生成人类语言。我们将探讨它们的工作原理、应用场景以及主要区别。语言模型语言模型是一种统计模型,旨在通过预测文本中下一个词或句子来理解和生成语言。传统的语言模型......
  • AI: 了解字节跳动的开源的奇迹 AnimateDiff-Lightning 文生视频大模型
    在不断发展的人工智能领域,开源贡献在推动技术进步和使前沿工具更广泛地可用方面起着至关重要的作用。字节跳动,这个科技界的知名企业,最近通过他们在HuggingFace上发布的模型AnimateDiff-Lightning,做出了重大贡献。本文将深入探讨AnimateDiff-Lightning的功能和优势,强调它为......
  • AI革新来袭:GitHub上的3大爆款项目,让你的创意与效率翻倍
    AI革新来袭:揭秘GitHub上的3大爆款项目,让你的创意与效率翻倍!2024年,AI技术在各行各业中掀起了一场革命,而GitHub作为开发者的乐园,孕育出了许多令人瞩目的AI开源项目。今天,就让我们一探究竟,看看这些项目如何让我们的生活和工作变得更加高效和有趣。  1.AI主播助你成为销售......
  • AWS JDBC Driver连接中国区的Aurora需要配置参数 enableClusterAwareFailover=false
    AWSJDBCDriver中国区和Global区域的区别是,由于中国区AuroraEndpoint与Global的后缀不同,中国区的AWSJDBCDriver其实无法识别中国区endpoint,因为中国区的资源endpoint是以".cn"结尾,这个endpoint不被认为是aurora的endpoint,会被认为是customdomain.因此应用程序在使用AW......
  • 【ZhangQian AI模型部署】目标检测、SAM、3D目标检测、旋转目标检测、人脸检测、检测
    目标检测【yolov10部署rknn、地平线、tensorRT、C++】【yoloworld部署rknn、地平线、tensorRT、C++】【yolov9部署rknn、地平线、tensorRT、C++】【yolov8部署rknn、地平线、tensorRT、C++】【yolov7部署rknn、地平线、tensorRT】【yolov6部署rknn、地平......
  • 阿里达摩院——寻光:用AI,实现视频创作一条龙!
    7月6日,在2024世界人工智能大会(WAIC2024)上,阿里达摩院推出了一站式AI视频创作平台—— 寻光,今天带大家提前来了解一下这款工具~1、关于“寻光”寻光是一个拥有辅助用户创作剧本、分镜图等,支持对生成及上传素材进行丰富的AI编辑,包括人物控制、场景控制、运镜控制、目标......