この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
広告
posted by fanblog
2021年04月21日
Linuxで動画処理コマンド
動画ファイルの結合
ffmpeg -f concat -i movie_list.txt -c copy output.mp4
movie_list.txtに「file(半角スペース)」に続けて結合したい動画ファイルを1行ずつ記載する。
output.mp4 が出力する動画ファイル。
動画ファイルに音声ファイルを結合する
ffmpeg -i video.mp4 -i music.mp3 -c:v copy -c:a aac -map 0:v:0 -map 1:a:0 output.mp4
video.mp4が音声を付与したい動画ファイル。
music.mp3が音声ファイル。
output.mp4が出力する動画ファイル。
2021年04月20日
Text To Speech (TTS) を IBM Watsonで行う
概要
IBM Watson は、IBM社が開発したAIです。無料でもAPIのテストなどが行なえます。
Text To Speech(TTS)
Text To Speech とは、文字列を入力して、それを自然に聞こえるように読み上げる機能です。
身近な例で言えば、 Google翻訳 があります。
Text To Speech を試す
IBM Text to Speech Demo でデモを行うことができます。ひと月あたり1万文字まで無料で試すことができます。
※試すには IBM Cloudに登録することが必要です。
ログイン後に「管理」タブ→「アクセス」→「APIキー」でAPIキーを作成します。
APIの実行は、ターミナルからcurlで実行します。
■実行コマンド
curl -X POST -u "apikey:{API}" \
--header "Content-Type: application/json" \
--data '{"text": "テスト実行です。"}' \
--output sample.mp3 \
"{URL}/v1/synthesize?voice=ja-JP_EmiVoice"
※{API}と{URL}は各アカウントに依存する。
上記の実行コマンドが成功すると、カレントディレクトリに、sample.mp3が作成されます。
Text To Speech の出力音声
Watsonで音声を生成した結果を以下リンクにつけた。
テキストデータ:「米国訪問中の菅義偉首相は米製薬大手のファイザーに新型コロナウイルスワクチンの追加供給を要請する調整に入った。17日、ファイザー幹部と電話協議する。日本が確保するワクチン量を増やす。」
■IBM Watson Sample#1■
同じく音声ファイルを作成できるOpenJtalkでの結果も比較としてのせる。
■OpenJtalk Sample#1■
Watsonのほうが、人間らしい音声になっているように感じる。
イントネーションなどはまだ違和感を感じる箇所もあるが、無料のAPIとしては十分と感じる。
2021年04月02日
【TIPS】python:pickle
pythonで変数をファイルに保存
シリアル化
データ構造をネットワーク上で格納または転送できる直列形式に変換する方法です。pythonでは、シリアル化を使用することで、複雑なオブジェクト構造を取得し、ディスクに保存したり、ネットワーク経由で送信できるバイトストリームに変換できます。このプロセスは マーシャリング
pickle可能タイプ
シリアル化のもっとも一般的な用途は、機械学習のトレーニングフェーズ後に、トレーニング状態を保存して、後でトレーニングをやり直すことなく使用できるようにすることです。
pythonでは、オブジェクトをシリアル化・逆シリアル化できる3つのモジュールが標準ライブラリとして用意されています。
- marshal:3つの中でもっとも古いモジュール。非推奨
- json:標準のjsonファイルを操作可能。人が読みやすく言語に依存しない。XMLよりも軽い。
- pickle:バイナリ形式でオブジェクトをシリアル化するため、人が読み取りできない。その一方で高速で様々なpythonで動作する。
jsonおよびXMLは、異なる言語との相互運用や人が読む必要がある場合に適した選択肢である。 pickleは、pythonのみで利用する場合や人が読む必要のない場合に適した選択肢である。
pickleモジュール
4つのメソッドで構成されています。 - pickle.dump(obj, file, protocol=None, *, fix_imports=True, buffer_callback=None)
- pickle.dumps(obj, protocol=None, *, fix_imports=True, buffer_callback=None)
- pickle.load(file, *, fix_imports=True, encoding="ASCII", errors="strict", buffers=None)
- pickle.loads(data, /, *, fix_imports=True, encoding="ASCII", errors="strict", buffers=None)
pickle可能
すべてが漬け込み可能であるとは限りません。不可能なオブジェクトは、データベース接続やネットワークソケット、実行中のスレッドなどです。回避策としては、サードバーティ製のdillやcloudpickleライブラリを使用することで回避できる可能性があります。このモジュールは、関数の関数など多くの方をシリアル化できます。
pickleオブジェクトの圧縮
データ形式はオブジェクト構造のコンパクトなバイナリ表現ですが、bz2モジュールで圧縮することで、最適化できます。セキュリティ上の懸念
アンピックプロセスで任意のコードを実行することができます。このリスクを軽減するために何が出来るでしょうか??完璧な回避策はありません。経験則として、 信頼されていないソースから来たデータや安全でないネットワークを介して送信されるデータを利用しないことです。中間者の攻撃を防ぐために、データに署名して改ざんされていないことを確認するhmacライブラリをすることをお勧めします。
まとめ
pickleモジュールを利用することで、オブジェクトを保持することができるようになるでしょう。