文章目录

一、获取歌曲

二、播放歌曲

三、总结

【加群获取学习资料QQ群:901381280】

上一篇文章已经介绍了语音智能管家之语音唤醒功能

那今天就来分享语音听音乐的技术教程

一、获取歌曲

通过语音输入:播放海阔天空,程序调用搜索歌曲功能,去搜索“海阔天空”对应的歌曲列表

歌曲来源:本人在自己的网站搭建了歌曲采集系统(2年前搭建的,正好现在可以使用上),个人网站链接:www.chenlove.cn

在这个基础上进行动态获取歌曲url(根据歌名或者歌手去在线搜索)
先上代码,再进行讲解

这里是程序请求头

####李运辰
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0","Accept": "application/json,text/javascript,*/*; q=0.01","Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3","Accept-Encoding": "gzip,deflate, br","X-Requested-With": "XMLHttpRequest",'Access-Control-Allow-Origin': '*',"Cookie": "Hm_lvt_50027a9c88cdde04a70f5272a88a10fa=1537365515; Hm_lpvt_50027a9c88cdde04a70f5272a88a10fa=1537511828; hibext_instdsigdipv2=1","Connection": "keep-alive"}

请求参数,其中name是歌曲名字(海阔天空)或者歌手的名字,page是页数

data = {'filter': 'name','input': name,'page': page,'type': typename,}

开始发送请求

####李运辰
url = "http://music.chenlove.cn"
r = requests.post(url, headers=headers, data=data)
r.encoding = 'utf-8'
ss = json.loads(r.text)

获取到数据之后,开始取出里面的真是歌曲url
由于树莓派上(python里面)不支持播放在线歌曲,所以需要根据url把歌曲下载到本地(因为可以会搜索很多次歌曲,所以每次下载都把之前的覆盖掉,避免占用存储空间)

这里也是根据requests去发送请求,以流的形式stream读取歌曲,最后保存成music.mp3文件。

resp = requests.get(url=url, stream=True)if resp.status_code == 200:print("开始下载")with open('music.mp3', 'wb') as wf:for data in resp.iter_content(1024):if data:wf.write(data)print("下载结束")

二、播放歌曲

下载好歌曲之后,开始进行播放
这里我百度和google了很多python播放mp3文件的代码,好多都无法使用,只有下面这么效果还算不错

先导入相应的包文件

import pygame  # pip install pygame
pygame.mixer.init()  # 音乐模块初始化

传入mp3音频文件路径filename(本地路径,咱们刚刚下载好的music.mp3文件)
可以设置

  1. 是否循环播放次数loops,默认是0次
  2. 开始播放位置start,默认是从0秒开始
  3. 音量value,设置播放的音量,音量value的范围为0.0到1.0
pygame.mixer.music.load(filename)
# pygame.mixer.music.play(loops=0, start=0.0)
#loops和start分别代表重复的次数和开始播放的位置。
pygame.mixer.music.play(loops=loops, start=start)
pygame.mixer.music.set_volume(value)
# 来设置播放的音量,音量value的范围为0.0到1.0。

此外还可以对正在播放的歌曲进行暂停播放

pygame.mixer.music.stop()  # 停止播放

附上完整代码

####李运辰
###播放音乐   貌似只能播放单声道音乐,可能是pygame模块限制
def playMusic(filename, loops=0, start=0.0, value=0.5):""":param filename: 文件名:param loops: 循环次数:param start: 从多少秒开始播放:param value: 设置播放的音量,音量value的范围为0.0到1.0:return:"""flag = False  # 是否播放过pygame.mixer.init()  # 音乐模块初始化while 1:if flag == 0:pygame.mixer.music.load(filename)# pygame.mixer.music.play(loops=0, start=0.0) loops和start分别代表重复的次数和开始播放的位置。pygame.mixer.music.play(loops=loops, start=start)pygame.mixer.music.set_volume(value)  # 来设置播放的音量,音量value的范围为0.0到1.0。if pygame.mixer.music.get_busy() == True:flag = Trueelse:if flag:pygame.mixer.music.stop()  # 停止播放break

三、总结

以上就是根据歌名或者歌手去在线搜索音乐,这些操作都可以通过语音唤醒对搜索程序进行操作,使用语音就可以直接搜索歌曲,并播放,还可以通过语音方式对正在播放歌曲的程序进行暂停和继续播放。

欢迎在下方评论。

在平时的科研和任务不多的时候,利用空闲的时间去编写这个系统(因为空闲时间的乐趣就是做自己喜欢的事情,嘻嘻嘻,正好可以用来编写这个系统)。

每次完成一个小进度的时候都会在公众号和博客进行更新,记录一下这个过程(毕竟自己动手完成一件事,还是很有成就感的)

希望大家也能在这个过程中可以学习到一些知识(大牛就忽略了吧,哈哈哈)

同时在这个过程中,大家有更好的建议也可以进行评论交流,让这个系统更加完善。

【加群获取学习资料QQ群:901381280】
【各种爬虫源码获取方式】
识别文末二维码,回复:爬虫源码
欢迎关注公众号:Python爬虫数据分析挖掘,方便及时阅读最新文章
回复【开源源码】免费获取更多开源项目源码

造一个智能语音音箱!!!太简单了【语音智能管家】相关推荐

  1. PS2023神经滤镜下载不了?教你一个方法,简直太简单了

    很多小伙伴不知道PS2023神经滤镜下载方法,教大家一个方法,简直太简单了.Photoshop 让创意世界不断前进.借助直观的工具和易于使用的模板,即使是初学者也可以做出惊人的事情. win版:htt ...

  2. 讯飞语音——带你简单实现语音听写

    语音听写 de 简单实现 一.前言 如果你没有在讯飞语音平台上创建应用,请先参考讯飞语音的详细配置使用 二.功能描述 语音听写和语音合成都是较为基础也是最常使用的两个基本功能. 语音合成是将文本转化为 ...

  3. 用Python写一个乒乓球游戏!太简单了!

    好久没有写游戏系列教程了,今天恰好浏览到了 Kivy 这个开源跨平台的Python 框架,它能用于开发多点触控的用户界面程序,允许快速简单的交互设计,非常方便,于是有了制作本教程的想法. 本教程将教你 ...

  4. 联发科mt8516价格_智能语音助手宠儿——联发科MT8516智能AI音箱核心板

    MT8516简介: MT8516支持四核心64位ARM®Cortex-A35™,主频达1.3GHz.该芯片还内建WiFi 802.11 b/g/n和支持蓝牙4.0.该芯片还提供多种存储规格,包括LPD ...

  5. AnyPi智能语音交互方案开发-智能语音音箱方案

    智能语音交互解决方案 AnyPi 提供基于Amazon Alexa/DuerOS/科大讯飞等语音平台的接入服务 语音对话: 使设备具有"能听能说"的能力,人与设备通过语音对话就可实 ...

  6. AnyPi智能语音音箱方案 智能蓝牙WIFI音箱方案开发 DuerOS及Alexa平台

    AnyPi 是由深圳奥卓领航有限公司推出的一款智能语音交互解决方案(官网:https://anypi.com),具有强大开发能力的团队,所有硬件,软件均具有自主研发知识产权.AnyPi团队从2014年 ...

  7. 在VS2012中实现Ext JS的智能提示太简单了

    Visual Studio 2012太强大了,居然能自己会去提取Ext JS的类的属性和方法,从而实现只能提示.下面就来介绍一下实现这个功能. 在Visual Studio 2012中随便创建一个We ...

  8. node ref char*_「 volute 」树莓派+Node.js造一个有灵魂的语音助手

    volute 是什么? volute(蜗壳)是一个使用 Raspberry Pi+ 制作的语音助手. 什么是树莓派? 树莓派(英语:Raspberry Pi)是基于 Linux 的单片机电脑,由英国树 ...

  9. 实现一个简单的语音聊天室(源码)

    语音聊天室,或多人语音聊天,是即时通信应用中常见的功能之一,比如,QQ的语音讨论组就是我们用得比较多的. 这篇文章将实现一个简单的语音聊天室,让多个人可以进入同一个房间进行语音沟通.先看运行效果截图: ...

  10. 百度财报首秀智能音箱交互次数,语音交互的春天来了?

    百度刚刚发布了2019年全年及第四季度财报,总营收1074亿人民币.单季营收289亿人民币,除了营收上继续保持双向增长,人工智能新业务也展露出一些新气象,并首次对外披露了这样一组数据: 小度品牌第一方 ...

最新文章

  1. 不喜欢SAP GUI?那试试用Eclipse进行ABAP开发吧
  2. 小白的第一本python书_读书笔记:编程小白的第一本python入门书
  3. Centos6.5子域名绑定子目录
  4. java程序设计 徐红_Java程序设计-徐红 王灿
  5. IPC 和 RPC (呵呵,我感觉我应该要钻研到这个深度啦)
  6. matlab画图横纵轴刻度相关设置
  7. JavaScript实现斐波那契数列(Febonacci Array)
  8. Tomcat与Apache集成
  9. Tensorflow 中添加正则化项
  10. adoption/adaption
  11. linux vi 应用
  12. Proteus仿真:MSP430
  13. 物理专业英语词汇(H-N)
  14. 又一程序员猝死...
  15. Contest2973 - 2021秋组队训练赛第十二场 问题 M: Cook Pancakes!
  16. 能力天空视频下载助手
  17. 数据,数据元素,数据项,数据对象
  18. 微信小程序(视图与逻辑)
  19. 专访李云:从通讯行业的架构师到互联网“新兵” 李云csdn
  20. 最大边缘相关多样性算法MMR的学习和实现

热门文章

  1. 零基础怎么学习平面设计,学习平面设计需要多久?
  2. 特征变换:特征归一化(Normalization)作用以及方法 Min-Max、Z-Score
  3. 广告roi怎么计算公式_ROI计算公式和提升ROI的方法是什么?
  4. 通信网实验_Kruskal算法_Mininet_Ryu
  5. MyBatis之ResultMap结果集映射
  6. python写 两只老虎.wav 音频文件
  7. Java中Flie类的用法
  8. 前端实现旗帜飘动效果系列 (Ⅳ):webgl实现
  9. 上古卷轴5捏脸php导入,上古卷轴5捏脸预设导入 上古卷轴5捏脸预设怎么导入
  10. 系统端口被占用解决方法