【python实用小脚本系列】用Python打造你的专属智能语音助手
用Python打造你的专属智能语音助手
在科技飞速发展的今天,语音助手已经成为了我们生活中的“小帮手”。无论是苹果的Siri,还是亚马逊的Alexa,它们都能通过语音指令帮我们完成各种任务。今天,我来给大家分享一个用Python打造的简单语音助手项目,它不仅能听懂你的话,还能帮你播放新闻、执行命令,甚至更多!听起来是不是很神奇?别急,接下来我将带你一步步了解它的奥秘。
核心代码解析
这个项目由三个主要部分组成:语音识别、语音合成和新闻播放。我们先来看看每个部分的核心代码。
1. 语音合成(mySpeaker.py)
# 根据操作系统选择合适的语音合成库
if platform.system() == "Windows":import pyttsx3try:engine = pyttsx3.init() # 初始化语音引擎except ImportError:passexcept RuntimeError:passvoices = 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 srspeech = 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:passexcept sr.RequestError:passexcept sr.WaitTimeoutError:passreturn 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_saydef 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 requestsdef 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打造一个简单的语音助手其实并不难?这个项目虽然简单,但却非常实用。你可以根据自己的需求进行扩展,让它在更多的场景中发挥作用。无论是控制智能家居设备,还是记录语音备忘录,它都能帮你实现。需要完整的源码,请在评论区留言,或私信我。
相关文章:
【python实用小脚本系列】用Python打造你的专属智能语音助手
用Python打造你的专属智能语音助手 在科技飞速发展的今天,语音助手已经成为了我们生活中的“小帮手”。无论是苹果的Siri,还是亚马逊的Alexa,它们都能通过语音指令帮我们完成各种任务。今天,我来给大家分享一个用Python打造的简单…...
《Java工程师面试核心突破》专栏简介
《Java工程师面试核心突破》专栏简介 🔥 大厂Offer收割机 | 源码级技术纵深 | 90%高频考点覆盖 专栏定位 「拒绝八股文,直击技术本质」 本专栏专为Java中高级工程师量身定制,通过6大核心模块、30个硬核专题,系统性拆解大厂面试…...
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…...
基于若依的ruoyi-vue-plus的nbmade-boot在线表单的设计(七)后端方面的设计
希望大家一起能参与我的新开源项目nbmade-boot: 宁波智能制造低代码实训平台 主要目标是类似设计jeecgboot那样的online表单功能,因为online本身没有开源这部分代码,而我设计这个是完全开源的,所以希望大家支持支持,开源不容易。 今天主要是讲后端部门之前漏的文件。 下面主…...
18、TimeDiff论文笔记
TimeDiff **1. 背景与动机****2. 扩散模型基础****3. TimeDiff 模型****3.1 前向扩散过程****3.2 后向去噪过程** 4、TimeDiff(架构)原理训练推理其他关键点解释 DDPM(相关数学)1、正态分布2、条件概率1. **与多个条件相关**&…...
【Rust 精进之路之第11篇-借用·实践】切片 (Slices):安全、高效地引用集合的一部分
系列: Rust 精进之路:构建可靠、高效软件的底层逻辑 作者: 码觉客 发布日期: 2025年4月20日 引言:不止整个借用,我们还能“借”片段! 在上一篇【借用规则】中,我们深入理解了 Rust 的引用 (&T, &mut T) 和借用规则。我们知道,引用允许我们在不获取所有权的情…...
Linux环境下使用ADB命令做嵌入式开发
介绍 adb一般是给Android开发用的,但是换个思路也能做嵌入式Linux开发 安装 以Ubuntu20.04为例 sudo apt install android-tools-adb android-tools-fastboot安装成功可以查看adb版本号 命令 查看adb设备 登录shell 上传文件到设备指定目录 拉取设备上的文件到…...
Ubuntu20.04安装Pangolin遇到的几种报错的解决方案
1.添加两个编译选项 /usr/include/OpenEXR/half.h:121:13: note: because ‘half’ has user-provided ‘half& half::operator(half)’121 | half & operator (half h);| ^~~~~~~~ 解决方案: 在CMakeList中添加以下两句: …...
SQL问题分析与诊断(8)——分析方法2
8.4. 方法 8.4.2. 目测评估方法 8.4.2.1. 方法说明 与Oracle等其他关系库类似,SQL Server中,作为其最核心、最重要的组件之一,CBO内置了相当复杂而高级的模型和算法,当将SQL语句及其相关统计数据等信息作为参数输入其中后,CBO会对该SQL语句各候选查询计划及其中各节点的…...
自动驾驶最新算法进展
自动驾驶技术的算法进展迅速,涵盖感知、预测、规划、端到端学习等多个领域。以下是2023年至2024年的关键进展及实例: 1. 感知与融合 BEVTransformer的进化:特斯拉的Occupancy Networks升级至支持动态场景建模,结合NeRF技术…...
深度学习方向急出成果,是先广泛调研还是边做实验边优化?
目录 有限资源下本科生快速发表深度学习顶会论文的实战策略 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…...
深入理解 DML 和 DQL:SQL 数据操作与查询全解析
深入理解 DML 和 DQL:SQL 数据操作与查询全解析 在数据库管理中,SQL(结构化查询语言)是操作和查询数据的核心工具。其中,DML(Data Manipulation Language,数据操作语言) 和 DQL&…...
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 驱动 问题描述 提示:这里描述项目中遇到的问题:…...
MyBatis-Plus 实战:优雅处理 JSON 字段映射(以 JSONArray 为例)
🎯MyBatis-Plus 实战:优雅处理 JSON 字段映射(以 JSONArray 为例) 👨💻 作者:William Dawson |📅 更新日期:2025-04-21 🚀 标签:MyB…...
线性代数 | 知识点整理 Ref 2
注:本文为 “线性代数 | 知识点整理” 相关文章合辑。 因 csdn 篇幅合并超限分篇连载,本篇为 Ref 2。 略作重排,未整理去重。 图片清晰度限于引文原状。 如有内容异常,请看原文。 【数学】线性代数知识点总结 阿巴 Jun 于 2024-…...
PyTorch深度学习框架60天进阶学习计划 - 第47天:模型压缩蒸馏技术(一)
PyTorch深度学习框架60天进阶学习计划 - 第47天:模型压缩蒸馏技术(一) 第一部分:知识蒸馏的温度调节机制详解 欢迎来到我们学习计划的第47天!今天我们将深入探讨模型压缩技术中的两个重要方法:知识蒸馏和…...
华为OD机试真题——最小的调整次数/特异性双端队列(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
2025 A卷 100分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C、C语言、GO六种语言的最佳实现方式! 2025华为OD真题目录全流程解析/备考攻略/经验分享 华为OD机试真题《最小的调…...
java+postgresql+swagger-多表关联insert操作(九)
入参为json,然后根据需要对多张表进行操作: 入参格式: {"username": "车主01","usertel": "11111111111","useridtype": "2","useridcard": null,"proname&qu…...
[密码学基础]国密算法深度解析:中国密码标准的自主化之路
国密算法深度解析:中国密码标准的自主化之路 国密算法(SM系列算法)是中国自主研发的密码技术标准体系,旨在打破国际密码技术垄断,保障国家信息安全。本文将从技术原理、应用场景和生态发展三个维度,全面解…...
Flink-01学习 介绍Flink及上手小项目之词频统计
flink简介 官网 概述: 学习Flink具体包括四个关键概念:流数据的持续处理,事件时间,有状态流处理和状态快照。 Apache Flink 是一个开源的流处理框架,旨在处理批处理和实时数据处理,具有高吞吐量和低延迟的…...
自注意力机制、多头自注意力机制、填充掩码 Python实现
原理讲解 【Transformer系列(2)】注意力机制、自注意力机制、多头注意力机制、通道注意力机制、空间注意力机制超详细讲解 自注意力机制 import torch import torch.nn as nn# 自注意力机制 class SelfAttention(nn.Module):def __init__(self, input…...
目标检测篇---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…...
