国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ChatGPT + Stable Diffusion + 百度AI + MoviePy 實(shí)現(xiàn)文字生成視頻,小說轉(zhuǎn)視頻,自媒體神器!(二)

這篇具有很好參考價(jià)值的文章主要介紹了ChatGPT + Stable Diffusion + 百度AI + MoviePy 實(shí)現(xiàn)文字生成視頻,小說轉(zhuǎn)視頻,自媒體神器!(二)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

ChatGPT + Stable Diffusion + 百度AI + MoviePy 實(shí)現(xiàn)文字生成視頻,小說轉(zhuǎn)視頻,自媒體神器!(二) 前言

最近大模型頻出,但是對于我們普通人來說,如何使用這些AI工具來輔助我們的工作呢,或者參與進(jìn)入我們的生活,就著現(xiàn)在比較熱門的幾個(gè)AI,寫個(gè)一個(gè)提高生產(chǎn)力工具,現(xiàn)在在邏輯上已經(jīng)走通了,后面會(huì)針對web頁面、后臺(tái)進(jìn)行優(yōu)化。

github鏈接

B站教程視頻 https://www.bilibili.com/video/BV18M4y1H7XN/


第三步、調(diào)用百度語音合成包進(jìn)行語音合成

這里不是智能用百度的API合成,想谷歌的,阿里云的都可以,只是我比較熟悉百度的API ps~: 關(guān)鍵是免費(fèi)??

class Main:
    client_id = client_id
    client_secret = client_secret

    def create_access_token(self):
        url = f"https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={self.client_id}&client_secret={self.client_secret}"
        payload = ""
        headers = {
            'Content-Type': 'application/json',
            'Accept': 'application/json'
        }
        response = requests.request("POST", url, headers=headers, data=payload)
        print("-----------向百度獲取 access_token API 發(fā)起請求了-----------")
        access_token = response.json()
        access_token.update({"time": datetime.now().strftime("%Y-%m-%d")})
        with open('access_token.json', 'w') as f:
            json.dump(access_token, f)
        return access_token

    def get_access_token(self):
        if os.path.exists('access_token.json'):
            with open('access_token.json', 'r') as f:
                data = json.load(f)
            time = data.get("time")
            if time and (datetime.now() - datetime.strptime(time, '%Y-%m-%d')).days >= 29:
                return self.create_access_token()
            return data
        return self.create_access_token()

    def text_to_audio(self, text: str, index: int):
        url = "https://tsn.baidu.com/text2audio"
        text = text.encode('utf8')
        FORMATS = {3: "mp3", 4: "pcm", 5: "pcm", 6: "wav"}
        FORMAT = FORMATS[6]
        data = {
            # 合成的文本,文本長度必須小于1024GBK字節(jié)。建議每次請求文本不超過120字節(jié),約為60個(gè)漢字或者字母數(shù)字。
            "tex": text,
            # access_token
            "tok": self.get_access_token().get("access_token"),
            # 用戶唯一標(biāo)識(shí),用來計(jì)算UV值。建議填寫能區(qū)分用戶的機(jī)器 MAC 地址或 IMEI 碼,長度為60字符以內(nèi)
            "cuid": hex(uuid.getnode()),
            # 客戶端類型選擇,web端填寫固定值1
            "ctp": "1",
            # 固定值zh。語言選擇,目前只有中英文混合模式,填寫固定值zh
            "lan": "zh",
            # 語速,取值0-15,默認(rèn)為5中語速
            "spd": 5,
            # 音調(diào),取值0-15,默認(rèn)為5中語調(diào)
            "pit": 5,
            # 音量,基礎(chǔ)音庫取值0-9,精品音庫取值0-15,默認(rèn)為5中音量(取值為0時(shí)為音量最小值,并非為無聲)
            "vol": 5,
            # (基礎(chǔ)音庫) 度小宇=1,度小美=0,度逍遙(基礎(chǔ))=3,度丫丫=4
            # (精品音庫) 度逍遙(精品)=5003,度小鹿=5118,度博文=106,度小童=110,度小萌=111,度米朵=103,度小嬌=5
            "per": 5003,
            # 3為mp3格式(默認(rèn)); 4為pcm-16k;5為pcm-8k;6為wav(內(nèi)容同pcm-16k); 注意aue=4或者6是語音識(shí)別要求的格式,但是音頻內(nèi)容不是語音識(shí)別要求的自然人發(fā)音,所以識(shí)別效果會(huì)受影響。
            "aue": FORMAT
        }
        data = urllib.parse.urlencode(data)
        response = requests.post(url, data)
        if response.status_code == 200:
            result_str = response.content
            save_file = str(index) + '.' + FORMAT
            audio = file_path + "audio"
            if not os.path.isdir(audio):
                os.mkdir(audio)
            audio_path = f'{audio}/' + save_file
            with open(audio_path, 'wb') as of:
                of.write(result_str)
            return audio_path
        else:
            return False

當(dāng)然了,這個(gè)設(shè)計(jì)也是熱拔插的,以后這些數(shù)據(jù)都會(huì)做成動(dòng)態(tài)的,在頁面用戶可以調(diào)整,也可以選擇其他的API服務(wù)商

第四步、調(diào)用百度語音合成包進(jìn)行語音合成

這里就比較麻煩了,首先要搭建起 Stable Diffusion 的環(huán)境,Window 用戶我記得有一個(gè) 繪世
的軟件,一鍵就可以安裝,mac用戶要去官網(wǎng)下載。

class Main:
    sd_url = sd_url

    def draw_picture(self, obj_list):
        """
        :param obj_list:
        :return: 圖片地址列表
        """
        picture_path_list = []
        for index, obj in enumerate(obj_list):
            novel_dict = {
                "enable_hr": "false",
                "denoising_strength": 0,
                "firstphase_width": 0,
                "firstphase_height": 0,
                "hr_scale": 2,
                "hr_upscaler": "string",
                "hr_second_pass_steps": 0,
                "hr_resize_x": 0,
                "hr_resize_y": 0,
                "prompt": "{}".format(obj["prompt"]),
                "styles": [
                    "string"
                ],
                "seed": -1,
                "subseed": -1,
                "subseed_strength": 0,
                "seed_resize_from_h": -1,
                "seed_resize_from_w": -1,
                "sampler_name": "DPM++ SDE Karras",
                "batch_size": 1,
                "n_iter": 1,
                "steps": 50,
                "cfg_scale": 7,
                "width": 1024,
                "height": 768,
                "restore_faces": "false",
                "tiling": "false",
                "do_not_save_samples": "false",
                "do_not_save_grid": "false",
                "negative_prompt": obj["negative"],
                "eta": 0,
                "s_churn": 0,
                "s_tmax": 0,
                "s_tmin": 0,
                "s_noise": 1,
                "override_settings": {},
                "override_settings_restore_afterwards": "true",
                "script_args": [],
                "sampler_index": "DPM++ SDE Karras",
                "script_name": "",
                "send_images": "true",
                "save_images": "true",
                "alwayson_scripts": {}
            }
            html = requests.post(self.sd_url, data=json.dumps(novel_dict))
            img_response = json.loads(html.text)
            image_bytes = base64.b64decode(img_response['images'][0])
            image = Image.open(io.BytesIO(image_bytes))
            # 圖片存放
            new_path = file_path + 'picture'
            if not os.path.exists(new_path):
                os.makedirs(new_path)
            picture_name = str(obj['index']) + ".png"
            image_path = os.path.join(new_path, picture_name)
            image.save(image_path)
            picture_path_list.append(image_path)
            print(f"-----------生成第{index}張圖片-----------")
        return picture_path_list

后期我看看能不能引入 Midjuorney 的服務(wù)商,或者他們官方的API ps ~ 做人沒有夢想和咸魚有什么區(qū)別??

第五步、使用moviepy將圖片和語音結(jié)合起來生成視頻

moviepy中文文檔

import os
from moviepy.editor import ImageSequenceClip, AudioFileClip, concatenate_videoclips
import numpy as np

from config import file_path


class Main:
    def merge_video(self, picture_path_list: list, audio_path_list: list, name: str):
        """
        :param picture_path_list: 圖片路徑列表
        :param audio_path_list: 音頻路徑列表
        :return:
        """
        clips = []
        for index, value in enumerate(picture_path_list):

            audio_clip = AudioFileClip(audio_path_list[index])
            img_clip = ImageSequenceClip([picture_path_list[index]], audio_clip.duration)
            img_clip = img_clip.set_position(('center', 'center')).fl(self.fl_up, apply_to=['mask']).set_duration(
                audio_clip.duration)
            clip = img_clip.set_audio(audio_clip)
            clips.append(clip)
            print(f"-----------生成第{index}段視頻-----------")
        print(f"-----------開始合成視頻-----------")
        final_clip = concatenate_videoclips(clips)
        new_parent = file_path + "video/"
        if not os.path.exists(new_parent):
            os.makedirs(new_parent)
        final_clip.write_videofile(new_parent + name + ".mp4", fps=24, audio_codec="aac")

    def fl_up(self, gf, t):
        # 獲取原始圖像幀
        frame = gf(t)

        # 進(jìn)行滾動(dòng)效果,將圖像向下滾動(dòng)50像素
        height, width = frame.shape[:2]
        scroll_y = int(t * 10)  # 根據(jù)時(shí)間t計(jì)算滾動(dòng)的像素?cái)?shù)
        new_frame = np.zeros_like(frame)

        # 控制滾動(dòng)的范圍,避免滾動(dòng)超出圖像的邊界
        if scroll_y < height:
            new_frame[:height - scroll_y, :] = frame[scroll_y:, :]

        return new_frame

暫時(shí)就先寫到這里了,后期努力添磚加瓦。 代碼已經(jīng)開源了。鏈接 有什么問題可以在github上或者博客介紹里來問我,byebye~??文章來源地址http://www.zghlxwxcb.cn/news/detail-628263.html

到了這里,關(guān)于ChatGPT + Stable Diffusion + 百度AI + MoviePy 實(shí)現(xiàn)文字生成視頻,小說轉(zhuǎn)視頻,自媒體神器!(二)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 文字轉(zhuǎn)圖片生成系統(tǒng)-Stable diffusion穩(wěn)定擴(kuò)散模型

    文字轉(zhuǎn)圖片生成系統(tǒng)-Stable diffusion穩(wěn)定擴(kuò)散模型

    二話不說先上效果圖:(附帶代碼和模型資源文件)? 讓它畫一個(gè)超級(jí)汽車在海邊。。? 近期百度推出了文言一心, 一個(gè)能回答問題,能根據(jù)文字描述繪制圖片的服務(wù),前期可能不太完善出現(xiàn)了一些失誤,不過這個(gè)idea還是相當(dāng)不錯(cuò)的 ? 這個(gè)東西挺好哈,作為文學(xué)創(chuàng)作,生成

    2024年02月09日
    瀏覽(27)
  • 代碼實(shí)現(xiàn)stable-diffusion模型,你也用AI生成獲得一等獎(jiǎng)的藝術(shù)圖

    代碼實(shí)現(xiàn)stable-diffusion模型,你也用AI生成獲得一等獎(jiǎng)的藝術(shù)圖

    Midjourney工具獲獎(jiǎng)圖片 好嗎,人工智能雖然已經(jīng)涉及到人類的方方面面,但沒有想到,AI 還能搶藝術(shù)家的飯碗,這不,一位小哥使用AI工具生成的藝術(shù)照片竟然獲獎(jiǎng)了,而且還是一等獎(jiǎng),且最近剛剛火起來的stable diffusion 更是讓藝術(shù)家與AI發(fā)生了爭執(zhí),到底AI是否搶了藝術(shù)家的飯

    2024年02月10日
    瀏覽(28)
  • 一文讀懂Stable Diffusion教程,搭載高性能PC集群,實(shí)現(xiàn)生成式AI應(yīng)用

    圖生圖 | PC集群 | PC Farm | Stable 文生圖 | 生成式AI | Stable Diffusion 在當(dāng)今計(jì)算領(lǐng)域中,PC集群和Stable Diffusion技術(shù)的應(yīng)用已經(jīng)成為不可或缺的一部分。這些技術(shù)在深度學(xué)習(xí)、AI繪畫、高性能計(jì)算、人工智能、大數(shù)據(jù)、ChatGPT、AIGC等領(lǐng)域中都具有重要的應(yīng)用價(jià)值。特別是在AI生成式內(nèi)

    2024年02月10日
    瀏覽(25)
  • 基于 Stable Diffusion免費(fèi)快速無代碼生成自己AI虛擬主播,并根據(jù)內(nèi)容實(shí)現(xiàn)多語言播報(bào)

    基于 Stable Diffusion免費(fèi)快速無代碼生成自己AI虛擬主播,并根據(jù)內(nèi)容實(shí)現(xiàn)多語言播報(bào)

    如何免費(fèi)快速無代碼生成自己AI虛擬主播? Stable Diffusion 是一種文本到圖像模型。它主要用于根據(jù)文本描述生成詳細(xì)的圖像。Stable Diffusion 是 midjourney 和 DALLE-2 等工具的絕佳替代品。這個(gè)工具的偉大之處在于您可以在您的計(jì)算機(jī)上本地運(yùn)行它或使用 Dream Studio 或 Hugging Face 等服

    2024年02月10日
    瀏覽(28)
  • chatGPT生成stable diffusion 提示詞

    chatGPT生成stable diffusion 提示詞

    # Stable Diffusion prompt 助理 你來充當(dāng)一位有藝術(shù)氣息的Stable Diffusion prompt 助理。 ## 任務(wù) 我用自然語言告訴你要生成的prompt的主題,你的任務(wù)是根據(jù)這個(gè)主題想象一幅完整的畫面,然后轉(zhuǎn)化成一份詳細(xì)的、高質(zhì)量的prompt,讓Stable Diffusion可以生成高質(zhì)量的圖像。 ## 背景介紹 Stab

    2024年02月03日
    瀏覽(25)
  • 如何使用 ChatGPT 生成 Stable diffusion 提示詞

    如何使用 ChatGPT 生成 Stable diffusion 提示詞

    http://chat.xutongbao.top StableDiffusion是一款利用深度學(xué)習(xí)的文生圖模型,支持通過使用提示詞來產(chǎn)生新的圖像,描述要包含或省略的元素。 我在這里引入StableDiffusion算法中的Prompt概念,又被稱為提示符。 下面的prompt是用來指導(dǎo)AI繪畫模型創(chuàng)作圖像的。它們包含了圖像的各種細(xì)節(jié),

    2024年02月03日
    瀏覽(19)
  • 使用ChatGPT為Stable Diffusion生成畫面的關(guān)鍵詞

    使用ChatGPT為Stable Diffusion生成畫面的關(guān)鍵詞

    在使用SD進(jìn)行繪圖的時(shí)候常??嘤谀硞€(gè)換面想不到,可以通過ChatGPT模板批量生成。 先來看下演示效果。 這個(gè)例子是根據(jù)古詩《陋室銘》編寫的描述。

    2024年02月11日
    瀏覽(29)
  • 基于百度AI實(shí)現(xiàn)文字和圖像敏感內(nèi)容審核

    基于百度AI實(shí)現(xiàn)文字和圖像敏感內(nèi)容審核

    百度AI 是指百度公司的人工智能技術(shù)全稱。它采用深度學(xué)習(xí)技術(shù),包括 自然語言處理、語音識(shí)別、計(jì)算機(jī)視覺、知識(shí)圖譜 等,可應(yīng)用于各個(gè)領(lǐng)域如互聯(lián)網(wǎng)、醫(yī)療、金融、教育、汽車、物流等。百度AI的發(fā)展將幫助人類更好地理解世界和提高生活品質(zhì),接下來就通過一個(gè)小案例

    2024年02月08日
    瀏覽(25)
  • Stable Diffusion體驗(yàn)——AI生成不同風(fēng)格照片

    Stable Diffusion體驗(yàn)——AI生成不同風(fēng)格照片

    AI繪畫想必大家都有所耳聞,最近博主嘗試了使用基于擴(kuò)散過程的圖像生成工具 Stable Diffusion 來生成多樣化的圖片,生成的照片質(zhì)量較高。 本文將會(huì)介紹我使用Stable Diffusion 生成 不同風(fēng)格照片的 過程 ,并闡述它與其他 同類工具的比較 以及它的 工作原理 。 輸入的 原始圖片

    2024年02月05日
    瀏覽(36)
  • Stable Diffusion Online:AI圖像生成工具

    Stable Diffusion Online:AI圖像生成工具

    【產(chǎn)品介紹】? 名稱 ? ?? ?? ?? ? Stable Diffusion Online 成立時(shí)間? ? ?? ?? ?? ? Stable Diffusion的母公司Stability AI,成立于2020年。? 具體描述 ? ?? ??

    2024年01月24日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包