「Reddit to Text-to-Speech」YouTubeビデオの最近のYouTubeの傾向に続いて、私はプロジェクトに乗り出し、できるだけ少ない介入でこれらのビデオをYouTubeに受信、生成、アップロードするプロセスを自動化できるプログラムを作成しました。プロジェクトを完了するのに4か月かかり、このタスクを完了するために同時に機能する3つの個別のプログラムで構成されています。
アイデアは、できるだけ多くの手動介入を最小限に抑え、すべての些細なタスクを自動化することでした。ただし、プロセスを100%自動化することはできません。たとえば、ビデオの品質がTTSのために構成されるため、リンクを含むコメントを保持することはできません。さらに、コメントには多数の票があるかもしれませんが、潜在的に攻撃的であり、YouTubeビデオにとって安全ではないため、削除する必要があります。サムネイルは、部分的に生成されますが、ビデオをクリックするために視聴者にあらゆる種類のアピールを作成するために編集する必要があります。同じことが、注意を払うためにClickBait-Yでなければならないビデオのタイトルについても言えます。クライアントプログラムで手動プロセスを合理化しようとしましたが、6つのビデオを作成するのに約30分かかります(YouTube Data APIで24時間以内にアップロードできる最大)。
私の生成されたビデオのいくつか:
https://www.youtube.com/watch?v=xxdkmhyxcsq
https://www.youtube.com/watch?v=aw0yjixxnxi&t=35s
ビデオを完成させるプロセスには、
レッドディットテキストからスピーチチャネルの例:
https://www.youtube.com/watch?v=izsxhx64pgq https://www.youtube.com/watch?v=VZDTUAP2ZTW
これらをYouTube Bot Video Generator Directory内の「Assets」と呼ばれるフォルダーに配置します。
さらに、私はプロジェクトを通じて部分的に多くのデザインの側面について考えを変えたため、一部のファイルは奇妙に名前が付けられており、あちこちに未使用のコードがあります。もうコードを更新しませんが、お気軽にお気軽にお問い合わせください。
依存関係を確認してください。txt
ほとんどのPython依存関係を簡単にインストールするには、クローニング後に次のコマンドを実行します(いくつかは手動でインストールする必要があります):
pip install -r requirements.txt
Reddit Text-to-Speechビデオのこの最近の傾向は、非常に単純な式の(通常)構成されています。
歌がランダムに選ばれます。ランダムに選択されるために、〜40曲Kevin Macleod Royality Free Songsをダウンロードしました。
https://www.youtube.com/watch?v=ccpyyrds-qo&list=plbzgr7h3fyus3lvitxtfaigv601ukuhjx
ビデオの生成で使用されるすべての資産は、ここからダウンロードできます:
http://www.mediafire.com/file/hpu1j1k1avwp9dj/youtube_bot_assets.zip/file
ビデオジェネレータープログラムの「Assets」というフォルダーに配置する必要があります。
このプロジェクトは、3つの別々のプログラムで構成されています。
このプログラムには、クライアントプログラムに接続するための(1)Socket Serverと、ビデオジェネレータークライアントに接続するための(2)Socket Serverがあります。さらに、このプログラムは1時間ごとにRedditから新しいスクリプトを入手し、まだ編集されていない既存のスクリプトも更新されます。
(1)このソケットサーバーは、データベースからマニュアルレビュープログラムに生のスクリプトを送信します(以下を参照)。次に、これらのレビューされたスクリプトを受信し、サムネイル、説明、タイトルを含む最終的なスクリプトでデータベースを更新します。サーバーは複数のクライアントを処理できるため、複数の人がこれらのスクリプトを編集できます。
(2)ビデオジェネレーターサーバーは現在、1つのビデオジェネレータークライアントを処理するようにのみ設計されています。このサーバーが複数のビデオジェネレータークライアントを複数のコンピューターの間に広げることを処理するのは、元の計画でした。ただし、1つのコンピューターがすべてのビデオ生成のニーズに十分であることがわかったため、1つのクライアントのみにハードコードを作成することにしました。このサーバーの目的は、データベースからVideo Generatorクライアントに最終的なスクリプトを送信することです。
このプログラムは、サムネイル、説明、タグ、タイトルを含むYouTube Bot Video Generator Serverから最終的なビデオスクリプトを受け取ります。これらのスクリプトはMP4ファイルに生成され、スケジュールされたリリース時間(現在午後5時、午後6時、午後7時にランダムにYouTubeにアップロードする推奨時間)にYouTubeにアップロードされます。スクリプトが受信されると、プログラムは、最後の6つのビデオがアップロードされたときにチェックしてアップロードするのに十分なAPIクレジットがあるまで待機します。
APIクォータの使用は、午前8時のGMTにリセットされます。各ビデオのアップロードには1658クレジットの費用がかかると計算しました。 1日に最大10 000クレジットを使用できます。これは、理論的には1日に6つのビデオをアップロードできることを意味します。ただし、実際には5つのビデオをアップロードすることができましたが、6番目のビデオがアップロードされる場合がありますが、サムネイルをアップロードするのに十分なクォータがありません。その場合、サムネイルを手動でアップロードするために手動介入が必要になります。ビデオはYouTube-uploadでアップロードされており、Python 2.7で作業することができました。 SubProcess.Check_Callで指定されたPythonバージョンと必要に応じて引数を使用して呼び出されます(以下のリンク)。
ビデオが正常にアップロードされると、そのステータスはアップロード時間とともに完了するように設定されているため、プログラムは1日以内にアップロードされたビデオの数を確認して、クォータの使用を超えないようにします。
YouTubeデータAPI情報https://developers.google.com/youtube/v3/getting-started youtube-upload(python 2.7)https://github.com/tokland/youtube-upload
プロジェクトの最も挑戦的な側面の1つは、テキストからスピーチをすることでした。テキストをスピーチに適切に機能させることでした。ダニエルMLGソフトスキャンテキストをスピーチボイスに使用したかったのです。これは、ほとんどのテキストからスピーチRedditビデオにあります。この声は非常に認識可能であり、(私の意見では)利用可能なスピーチの最高のサウンドテキストの1つであるため、これはプロジェクトの重要な部分であると信じていました。 Balabolkaのコマンドラインバージョンを使用して.wavファイルを生成し、これらをビデオ生成プログラムで異なるフレームと同期しました。
Balabolka http://www.cross-plus-a.com/balabolka.htmダニエルMLG音声の取得方法https://www.youtube.com/watch?v=yj3dhtnyoty
クライアントプログラムは、ビデオに含まれていないコメントを除外するための左右のスワイプの左右のプロセスです。また、ユーザーがタイトルを作成し、ビデオ用のサムネイルをアップロードし、説明とタグを編集することもできますが、タイトル、説明、タグは次のように部分的に生成されます:タイトル:デフォルトは投稿タイトル説明:デフォルトはその内部の投稿テンプレートです。これらはすべて編集できます。サムネイルのテンプレートも部分的に生成されます。これらのすべてのフィールドで文字の量が超えられないことを確認するためのチェックがあります。たとえば、タイトルは100文字未満でなければなりません
ビデオの最終コンテンツには、編集されたスクリプト、サムネイル、タグ、説明、ビデオ設定が含まれます(背景色、テキストサイズ、行の幅などの編集プロセス中にビデオジェネレーターテンプレートの特定の機能を変更することができます。通常、デフォルトはあまり使用しませんでした)。
mysql
スクリプトの保存とそれらは関連情報をMySQLデータベースで行います。 MySQLデータベースをプロジェクトに使用したのはこれが初めてです。SQLでは、物事を機能させるために必要なものを学びました。 3つのテーブル「ユーザー」、「ビデオジェネレーター」、「スクリプト」を使用しました
「ユーザー」テーブル
もともと私は、ユーザーが統計を編集し、誰がオンラインであるかなどを確認する広範なログインシステムを作成することを計画していました。これを廃棄したのは、同じビデオを編集およびアップロードするのを防ぐためにどのビデオを編集しているかを追跡するための唯一の使用です。パスワードは、クライアント側のMD5で暗号化されます
「スクリプト」テーブル
最も重要な表は、すべてのスクリプト情報を保持します。ステータスフィールドは、スクリプトがどこにあるべきかを追跡するために非常に重要です。
-RAW:スクリプトは編集できます
- 編集:スクリプトは編集されており、この状態で他のユーザーが編集することはできません
-complete:スクリプトが編集が完了し、ビデオジェネレータークライアントに送信されます
-successupload:スクリプトはYouTubeに正常にアップロードされました
「Videogenerators」テーブル
ユーザーと同様に、ログインするユーザー名とパスワードを用意するようにクライアントに設計しました。パスワードは、クライアント側にMD5で暗号化されています
これらのテーブルは、まだ存在しない場合は「YouTubeBot」と呼ばれるデータベース内で自動的に作成されます。
Google APIアカウントの受信資格情報は、1回限りのログインに続いて自動的にダウンロードされ、自動的に保存されます(Googleアカウントのログインを要求するブラウザウィンドウが開きます):videouproader.py-> get_credentials()