【Gradio】使用 Gradio Python 客户端构建 FastAPI 应用程序

在这篇博客文章中,我们将展示如何使用 gradio_client Python 库,该库允许开发者以编程方式向 Gradio 应用发出请求,通过创建一个示例 FastAPI 网络应用程序。我们将要构建的网络应用程序称为"Acapellify",它将允许用户上传视频文件作为输入,并返回一个没有伴奏音乐的视频版本。它还将展示一个生成视频的画廊。

 先决条件

在我们开始之前,请确保您运行的是 Python 3.9 或更高版本,并且已经安装了以下库:

  • gradio_client

  • fastapi

  • uvicorn

您可以从 pip 安装这些库:

$ pip install gradio_client fastapi uvicorn

您还需要安装 ffmpeg。您可以通过在终端运行来检查是否已经安装了 ffmpeg:

$ ffmpeg version

否则,请按照这些说明安装 ffmpeg。

第一步:编写视频处理函数 

让我们从看似最复杂的部分开始 —— 使用机器学习从视频中移除音乐。

幸运的是,有一个现成的空间可以让这个过程更简单:https://huggingface.co/spaces/abidlabs/music-separation。这个空间接受一个音频文件,并生成两个独立的音频文件:一个包含原始剪辑中的乐器音乐,另一个包含所有其他声音。非常适合我们的客户使用!

打开一个新的 Python 文件,比如说 main.py ,然后从 gradio_client 中导入 Client 类,并将其连接到这个空间:

from gradio_client import Client


# 创建一个Client实例,指定了要使用的API服务为"abidlabs/music-separation"
client = Client("abidlabs/music-separation")


def acapellify(audio_path):
    """
    使用指定的音乐分离服务,从提供的音频路径中分离出人声部分。


    :param audio_path: 音频文件的路径。
    :return: 分离出的人声音频的路径或结果。
    """
    # 使用client的predict方法提交预测任务,指定api_name为"/predict"
    # 这里预设"/predict"为该服务分离人声的API端点
    result = client.predict(audio_path, api_name="/predict")
    # 假设服务返回的结果是一个列表,其中第一个元素是我们需要的人声音频的路径或结果
    return result[0]

这就是所需的全部代码 -- 请注意 API 端点返回两个音频文件(一个没有音乐,一个只有音乐)在一个列表中,所以我们只返回列表的第一个元素。

注意:由于这是一个公共空间,可能还有其他用户在使用这个空间,这可能会导致体验缓慢。您可以用您自己的 Hugging Face 令牌复制这个空间,并创建一个只有您能访问的私人空间,以绕过队列。要做到这一点,只需将上面的前两行替换为:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值