zoukankan      html  css  js  c++  java
  • 造一个智能语音音箱!!!太简单了【语音智能管家】

    文章目录

    一、获取歌曲

    二、播放歌曲

    三、总结

    【加群获取学习资料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 = True
            else:
                if flag:
                    pygame.mixer.music.stop()  # 停止播放
                    break
    

    三、总结

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

    欢迎在下方评论。

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

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

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

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

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

    欢迎扫码

  • 相关阅读:

    python内存管理
    python-继承类执行的流程
    Redis-key的设计技巧
    Redis-误操作尝试恢复
    Python3之hashlib
    面相对象
    设计模式
    RESTful API规范
    Django中间件执行流程
  • 原文地址:https://www.cnblogs.com/chenlove/p/14161408.html
Copyright © 2011-2022 走看看