【python实用小脚本系列】用Python打造你的专属智能语音助手

news2025/4/23 4:15:23

用Python打造你的专属智能语音助手

在科技飞速发展的今天,语音助手已经成为了我们生活中的“小帮手”。无论是苹果的Siri,还是亚马逊的Alexa,它们都能通过语音指令帮我们完成各种任务。今天,我来给大家分享一个用Python打造的简单语音助手项目,它不仅能听懂你的话,还能帮你播放新闻、执行命令,甚至更多!听起来是不是很神奇?别急,接下来我将带你一步步了解它的奥秘。

核心代码解析

这个项目由三个主要部分组成:语音识别、语音合成和新闻播放。我们先来看看每个部分的核心代码。

1. 语音合成(mySpeaker.py

# 根据操作系统选择合适的语音合成库
if platform.system() == "Windows":
    import pyttsx3

    try:
        engine = pyttsx3.init()  # 初始化语音引擎
    except ImportError:
        pass
    except RuntimeError:
        pass
    voices = engine.getProperty('voices')  # 获取语音库
    engine.setProperty('voice', voices[1].id)  # 设置语音为女性声音
    engine.setProperty('rate', 150)  # 设置语速
    engine.setProperty('volume', 1.2)  # 设置音量

    def print_say(txt):
        print(txt)  # 打印文本
        engine.say(txt)  # 语音合成
        engine.runAndWait()  # 等待语音播放完成

这段代码根据操作系统选择合适的语音合成库。在Windows系统中,使用pyttsx3库来实现语音合成。它会初始化语音引擎,设置语音为女性声音,并调整语速和音量。

2. 语音识别(voice_to_text.py

import speech_recognition as sr

speech = sr.Recognizer()

def voice_to_text():
    voice_input = ""
    with sr.Microphone() as source:  # 使用麦克风作为音频源
        speech.adjust_for_ambient_noise(source)  # 调整环境噪音
        try:
            audio = speech.listen(source)  # 监听音频
            voice_input = speech.recognize_google(audio)  # 使用Google语音识别
        except sr.UnknownValueError:
            pass
        except sr.RequestError:
            pass
        except sr.WaitTimeoutError:
            pass
    return voice_input

这段代码使用speech_recognition库来实现语音识别。它会监听麦克风的音频输入,并通过Google语音识别API将音频转换为文本。

3. 新闻播放(read_npr_news.py

from io import BytesIO
import requests
import bs4
from pygame import mixer
from mySpeaker import print_say

def news_brief():
    url = 'https://www.npr.org/podcasts/500005/npr-news-now'  # NPR新闻的网址
    response = requests.get(url)  # 获取网页内容
    soup = bs4.BeautifulSoup(response.text, 'html.parser')  # 解析网页
    casts = soup.findAll('a', {'class': 'audio-module-listen'})  # 查找音频链接
    cast = casts[0]['href']
    mp3 = cast.find("?")
    mymp3 = cast[0:mp3]  # 获取MP3文件的链接

    mymp3 = requests.get(mymp3)  # 下载MP3文件
    voice = BytesIO()
    voice.write(mymp3.content)
    voice.seek(0)
    mixer.init()  # 初始化pygame混音器
    mixer.music.load(voice)  # 加载音频
    mixer.music.play()  # 播放音频

这段代码实现了新闻播放功能。它通过爬取NPR新闻网站的音频链接,下载MP3文件,并使用pygame库播放音频。

更复杂的应用场景

场景一:智能家居控制

我们可以扩展这个项目,让它控制智能家居设备。例如,你可以通过语音指令打开或关闭灯光、调节温度等。

import requests

def control_smart_home(command):
    if "turn on the light" in command:
        requests.get("http://your-smart-home-api/turn_on_light")
        print_say("Light turned on.")
    elif "turn off the light" in command:
        requests.get("http://your-smart-home-api/turn_off_light")
        print_say("Light turned off.")

这个函数会根据语音指令控制智能家居设备。你可以通过调用智能家居API来实现具体的控制逻辑。

场景二:语音备忘录

我们还可以扩展这个项目,让它记录语音备忘录。你可以通过语音指令记录任务或提醒事项,并将它们保存到文件中。

def record_memo(memo):
    with open("memo.txt", "a") as f:
        f.write(memo + "\n")
    print_say("Memo recorded.")

这个函数会将语音指令记录到一个文本文件中。你可以随时查看这些备忘录。

总结

通过今天的分享,你是不是觉得用Python打造一个简单的语音助手其实并不难?这个项目虽然简单,但却非常实用。你可以根据自己的需求进行扩展,让它在更多的场景中发挥作用。无论是控制智能家居设备,还是记录语音备忘录,它都能帮你实现。需要完整的源码,请在评论区留言,或私信我。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2340488.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Navicat连接数据库密码忘了如何解析

1、首先打开Navicat导出密码 打开文件---》导出链接----》选择连接并勾选导出密码 2、用编辑器打开复制密码 把password后面的密码复制出来 3、打开php编辑器,我这边因为平时不用就在网上找了一个在线编辑器 地址: https://www.w3cschool.cn/tryrun/runcode?la…

OpenStack Yoga版安装笔记(22)Swift笔记20250418

一、官方文档 https://docs.openstack.org/swift/yoga/admin/objectstorage-components.html#https://docs.openstack.org/swift/yoga/admin/objectstorage-components.html# 二、对象存储简介(Introduction to Object Storage) OpenStack 对象存储&a…

18、TimeDiff论文笔记

TimeDiff **1. 背景与动机****2. 扩散模型基础****3. TimeDiff 模型****3.1 前向扩散过程****3.2 后向去噪过程** 4、TimeDiff(架构)原理训练推理其他关键点解释 DDPM(相关数学)1、正态分布2、条件概率1. **与多个条件相关**&…

Linux环境下使用ADB命令做嵌入式开发

介绍 adb一般是给Android开发用的,但是换个思路也能做嵌入式Linux开发 安装 以Ubuntu20.04为例 sudo apt install android-tools-adb android-tools-fastboot安装成功可以查看adb版本号 命令 查看adb设备 登录shell 上传文件到设备指定目录 拉取设备上的文件到…

深度学习方向急出成果,是先广泛调研还是边做实验边优化?

目录 有限资源下本科生快速发表深度学习顶会论文的实战策略 1.短周期内可出成果的研究路径 2.论文阅读与复现的优先顺序 3.无一对一指导时的调研与实验组织 4.成功案例:本科生顶会论文经验 5.快速上手的研究子方向推荐 大家好这里是AIWritePaper官方账号&…

级联vs端到端、全双工、轮次检测、方言语种、商业模式…语音 AI 开发者都在关心什么?丨Voice Agent 学习笔记

编者按: A16Z在《AI Voice Agents: 2025 Update》中提到: 语音是 AI 应用公司最强大的突破之一。 它是人类沟通中最频繁(也是信息密度最高的)形式,AI 也让其首次变得“可编程”。 在13期Z沙龙,我们聚焦AI…

阿里云镜像加速仅支持阿里云产品了

最近在拉取docker镜像时一直报超时的错误: docker pull hello-world Using default tag: latest Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exce…

05--MQTT物联网协议

一、MQTT的概念 MQTT 协议快速入门 2025:基础知识和实用教程 | EMQ 1.MQTT(Message Queuing Telemetry Transport)是一种轻量级、基于发布-订阅模式的消息传输协议,适用于资源受限的设备和低带宽、高延迟或不稳定的网络环境。它…

学习设计模式《二》——外观模式

一、基础概念 1.1、外观模式的简介 外观模式的本质是【封装交互、简化调用】; 外观模式的说明:就是通过引入一个外观类,在这个类里面定义客户端想要的简单方法,然后在这些方法里面实现;由外观类再去分别调用内部的多个…

永磁同步电机控制算法-VF控制

一、原理介绍 V/F 控制又称为恒压频比控制,给定VF 控制曲线 电压是频率的tt例函数 即控制电压跟随频率变化而变化以保持磁通恒定不变。 二、仿真模型 在MATLAB/simulink里面验证所提算法,搭建仿真。采用和实验中一致的控制周期1e-4,电机部分计算周期为…

qt 配置 mysql 驱动问题:Cannot load library qsqlmysql;QMYSQL driver not loaded

项目场景: 环境版本: qt :5.14.2 mysql:8.0 windows:10 提示:qt 配置 mysql 驱动: 项目场景:qt 配置 mysql 驱动 问题描述 提示:这里描述项目中遇到的问题:…

线性代数 | 知识点整理 Ref 2

注:本文为 “线性代数 | 知识点整理” 相关文章合辑。 因 csdn 篇幅合并超限分篇连载,本篇为 Ref 2。 略作重排,未整理去重。 图片清晰度限于引文原状。 如有内容异常,请看原文。 【数学】线性代数知识点总结 阿巴 Jun 于 2024-…

华为OD机试真题——最小的调整次数/特异性双端队列(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现

2025 A卷 100分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C、C语言、GO六种语言的最佳实现方式! 2025华为OD真题目录全流程解析/备考攻略/经验分享 华为OD机试真题《最小的调…

Flink-01学习 介绍Flink及上手小项目之词频统计

flink简介 官网 概述: 学习Flink具体包括四个关键概念:流数据的持续处理,事件时间,有状态流处理和状态快照。 Apache Flink 是一个开源的流处理框架,旨在处理批处理和实时数据处理,具有高吞吐量和低延迟的…

目标检测篇---R-CNN梳理

目标检测系列文章 第一章 R-CNN 目录 目标检测系列文章📄 论文标题🧠 论文逻辑梳理1. 引言部分梳理 (动机与思想) 📝 三句话总结🔍 方法逻辑梳理🚀 关键创新点🔗 方法流程图补充边界框回归 (BBR)1. BBR 的…

C#处理网络传输中不完整的数据流

1、背景 在读取byte数组的场景(例如:读取文件、网络传输数据)中,特别是网络传输的场景中,非常有可能接收了不完整的byte数组,在将byte数组转换时,因字符的缺失/增多,转为乱码。如下…

HTML 初识

段落标签 <p><!-- 段落标签 -->Lorem ipsum dolor sit amet consectetur adipisicing elit. Fugiat, voluptate iure. Obcaecati explicabo sint ipsum impedit! Dolorum omnis voluptas sint unde sed, ipsa molestiae quo sapiente quos et ad reprehenderit.&l…

MATLAB 训练CNN模型 yolo v4

学生对小车控制提出了更好的要求&#xff0c;能否加入深度学习模型。 考虑到小车用matlab来做&#xff0c;yolo v5及以上版本都需要在pytorch下训练&#xff0c;还是用早期版本来演示。 1 yolov4 调用 参考 trainYOLOv4ObjectDetector (mathworks.com) name "tiny-yo…

【前端】跟着maxkb学习logicflow流程图画法

文章目录 背景1. 选定学习对象-maxkb应用逻辑编排2. 确定实现框架3. 关键逻辑&#xff1a;查看app-node.js4. 学习开始节点绘制流程数据形式 5. 给节点增加表单输入框遇到过的问题 背景 看看前端如何绘制流程图&#xff0c;界面好看点。 "logicflow/core": "1.…

【漏洞复现】CVE-2024-38856(ApacheOfbiz RCE)

【漏洞复现】CVE-2024-38856&#xff08;ApacheOfbiz RCE&#xff09; 1. 漏洞描述 Apache OFBiz 是一个开源的企业资源规划&#xff08;ERP&#xff09;系统。它提供了一套企业应用程序&#xff0c;用于集成和自动化企业的许多业务流程。 这个漏洞是由于对 CVE-2023-51467 的…