基于深度学习实现抖音自动点赞视频

本文介绍了一个项目,利用Python进行安卓音频捕获,通过声纹识别技术判断与样本的相似度,实现点赞或“不感兴趣”的自动操作。涉及的技术包括Voicemeeter8Setup、Spleeter、Resemblyzer、ffmpeg和ADB工具,以及如何设置相似度阈值和进行屏幕操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

整个项目实现的功能是:

先捕获安卓的音频,然后进行声纹识别,判断与给定的样本的相似度达到一定的阀值,则点赞否则点击“不感兴趣”,这样,随着抖音推荐算法和程序的运行,推荐的视频越来越接近给定的样本。

项目架构:

  • scrcpy 用于捕获音频到Windows系统
  • Voicemeeter8Setup.exe(potato版)用于内录
  • spleeter Python的人声提取库
  • resemblyzer Python的声纹库
  • ffmpeg人声提取库的依赖

需要注意的点

Voicemeeter8Setup

B1、B2、B3,勾选其一,然后用以下Python代码查看当前录音所用的设备以及可用设备列表:
sd.query_devices()
确保使用了以上勾选的,否则需使用device指定设备,例如:

audio_data = sd.rec(int(duration * sampling_rate), samplerate=sampling_rate, channels=2, dtype='float64', device=11)

在这里插入图片描述

ADB

adb控制安卓所使用的坐标并不是通用的,按需调整。
若想获取坐标,请在安卓手机的“开发者选项”中,找到“指针位置”(或类似命名的选项,如“显示触摸数据”)并启用它。

如果执行命令出错,则尝试:
adb start-server

scrcpy

scrcpy在2.0版本中开始支持捕获音频,但是需要确保>=安卓11,详情请见:https://github.com/Genymobile/scrcpy/blob/master/doc/audio.md

若手机系统不支持升级到更高版本(安卓11),可使用LineageOS有很多小惊喜

resemblyzer

虽然已经提取了人声,但是声纹库在这上面表现不佳。
如果待比对的声音与给定的声音样本是同一人不同时空的录音,其相似度(余弦相似度)>=0.8,保守一点>=0.85,而即使是>=0.8仍有少数根本不可能相似的音频得到了过高的相似度。
所以,我建议阀值设为>=0.86,即使是会忽略一些“待比对的声音与给定的声音样本是同一人不同时空的录音”但是更保守。

Python

必须使用Python3.8否则无法使用pip安装上spleeter

代码部分:

import random
import time
import librosa
from spleeter.separator import Separator
from resemblyzer import VoiceEncoder
import os
import sounddevice as sd  # 导入用于录音的库
import soundfile as sf
from scipy.spatial.distance import cosine

def record_audio(separator, voiceEncoder, duration=5, sampling_rate=48000):
    # 使用sounddevice录音
    print("开始录音...")
    audio_data = sd.rec(int(duration * sampling_rate), samplerate=sampling_rate, channels=2, dtype='float64')
    sd.wait()  # 等待录音结束
    print("录音结束。")

    # 写入
    sf.write("temp.wav", audio_data, sampling_rate)

    # 使用Spleeter提取人声
    separator.separate_to_file("temp.wav","output")

    librosa_audio, _ = librosa.load("output/temp/vocals.wav", sr=sampling_rate)

    # 使用Resemblyzer
    return voiceEncoder.embed_utterance(librosa_audio)

def compare_voice(separator, voiceEncoder, embedding1):
    embedding2 = record_audio(separator, voiceEncoder)

    # 计算两个嵌入之间的相似度
    similarity = 1 - cosine(embedding1, embedding2)
    print(f"相似度:{similarity}")
    # return similarity >= 0.86
    return similarity >= 0.70


def swipe_screen():
    # 上滑起始坐标
    start_x = 559 + random.randint(-1, 1)
    start_y = 1435 + random.randint(-1, 1)

    # 上滑结束坐标
    end_x = 554 + random.randint(-1, 1)
    end_y = 500 + random.randint(-1, 1)

    # 在200毫秒至500毫秒之间随机选择持续时间
    duration = random.randint(200, 500)

    # 构造上滑命令字符串
    swipe_command = f"C:\\Users\\likewendy\\Downloads\\platform-tools-latest-windows\\platform-tools\\adb.exe shell input swipe {start_x} {start_y} {end_x} {end_y} {duration}"

    # 执行上滑命令
    os.system(swipe_command)

def click_button(similar):
    if similar:
        # 原始坐标
        # 发现页播放页的喜欢 坐标
        # base_x = 1008
        # base_y = 865

        # 作者页播放页的喜欢 坐标
        # base_x = 1000
        # base_y = 996

        # 在5的范围内随机,确保结果是整数
        # x = base_x + random.randint(-1, 1)
        # y = base_y + random.randint(-1, 1)

        # # 构造命令字符串,使用f-string包含变量
        # command = f"C:\\Users\\likewendy\\Downloads\\platform-tools-latest-windows\\platform-tools\\adb.exe shell input tap {x} {y}"

        # 点击操作坐标
        x = 554 + random.randint(-1, 1)
        y = 900 + random.randint(-1, 1)
        duration = random.randint(50, 100)  # 浮动
        
        # 构造点击命令字符串
        command = f"C:\\Users\\likewendy\\Downloads\\platform-tools-latest-windows\\platform-tools\\adb.exe shell input tap {x} {y}"

        # 执行命令
        os.system(command)
        time.sleep(duration / 1000)
        os.system(command)

        time.sleep(1)
        # 上滑操作
        swipe_screen()
    else:
        # 长按操作坐标和持续时间
        long_press_x = 484 + random.randint(-1, 1)
        long_press_y = 955 + random.randint(-1, 1)
        duration = random.randint(1500, 2000)  # 浮动

        # 构造长按命令字符串
        long_press_command = f"C:\\Users\\likewendy\\Downloads\\platform-tools-latest-windows\\platform-tools\\adb.exe shell input swipe {long_press_x} {long_press_y} {long_press_x} {long_press_y} {duration}"

        # 执行长按命令
        os.system(long_press_command)

        # 等待持续时间 
        time.sleep(1)

        # 点击操作坐标
        click_x = 543 + random.randint(-1, 1)
        click_y = 1533 + random.randint(-1, 1)

        # 构造点击命令字符串
        click_command = f"C:\\Users\\likewendy\\Downloads\\platform-tools-latest-windows\\platform-tools\\adb.exe shell input tap {click_x} {click_y}"

        # 执行点击命令
        os.system(click_command)


if __name__ == '__main__':

    # 初始化和加载模型(只执行一次)
    print("正在加载模型...")

    # 人声提取
    separator = Separator('spleeter:2stems')
    voiceEncoder = VoiceEncoder()
    
    # 用于和其他音频比对的声纹样本
    audio, rate = librosa.load("1_dwy_segment_00-26_to_00-52_(Vocals).mp3", sr=None)
    embedding = voiceEncoder.embed_utterance(audio)
    
    print("模型加载完成。")

    try:
        while True:
            similar = compare_voice(separator, voiceEncoder, embedding1=embedding)
            click_button(similar)
            time.sleep(1.5)
    except KeyboardInterrupt:
        print("用户中断操作,退出程序。")
        exit(0)

声明

代码只是一种我自用的demo状态,无法无人值守运行,主要是我对声纹很感兴趣,写了这么个东西。

为了深入理解用户的偏好并制定有效的营销策略,首先需要熟悉用户的在线行为和内容的传播方式。用户行为数据的分析可以分为以下几个步骤: 参考资源链接:[短视频营销洞察:崛起与用户行为分析](https://wenku.csdn.net/doc/ndjbc587so?spm=1055.2569.3001.10343) 首先,获取用户行为数据。通过平台提供的后台分析工具,我们可以收集用户观看、、评论、分享等互动行为的数据。此外,还应收集用户观看视频的时间、频率、平均观看时长、留存率等指标,这些数据对于分析用户的活跃度和忠诚度至关重要。 接下来,对数据进行清洗和预处理。这包括去除无效数据、处理缺失值和异常值,并将数据格式统一。预处理的目的是确保数据质量,为后续的分析提供准确的基础。 然后,进行数据探索和可视化分析。运用统计分析和可视化工具,如Python的pandas、matplotlib和seaborn库,对用户行为数据进行描述性分析,找出数据的模式和趋势。例如,我们可以通过散图和线图来展示用户的观看时长和互动行为的关系。 根据分析结果,我们能识别出哪些类型的内容能吸引用户的注意力,哪些时段发布内容可以获得更高的互动率。此外,可以通过用户群体细分,理解不同用户群体的特定需求和偏好,例如通过年龄、性别、地域分布等因素划分用户群体。 在得出这些洞察后,制定营销策略就变得更加有针对性。例如,如果数据表明用户在晚上8到10之间更活跃,那么在这个时间段发布新内容将会提高曝光率。如果发现某些特定类型的内容,如娱乐或知识类短视频,得到用户较高的互动,那么就可以加大这类内容的产出。 最后,策略执行后,要持续监测数据分析结果,并根据反馈调整营销策略。这包括监控新发布内容的表现,分析哪些营销活动带来了用户增长,哪些没有达到预期效果,并对内容和营销策略进行持续优化。 通过以上步骤,可以确保你的营销策略与用户行为数据紧密结合,提升内容质量,增强用户参与度,并最终实现品牌推广的目标。为了更深入地学习和应用这些分析技巧,我建议参考《短视频营销洞察:崛起与用户行为分析》这一PPT模板,其中提供了从行业历史到平台分析,再到内容创作趋势及商业应用的全面视角,为营销实践提供更深层次的见解。 参考资源链接:[短视频营销洞察:崛起与用户行为分析](https://wenku.csdn.net/doc/ndjbc587so?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Deng_Xian_Shemg

捐助1元钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值