乙Py先生のプログラミング教室

乙Py先生のプログラミング教室
初学者のためのプログラミング学習サイト

今回は音声認識ライブラリの
「Whisper」を用いて
音声の文字起こしを行ってみました

解説動画はこちら


 
Whisperとは

OpenAIの音声認識ライブラリ

68万時間分の大規模なデータセットで
学習された自動音声認識モデル
音声から文字起こしする事ができます

早速使っていきましょう

Google Colabを用いて
コードを動かす事ができます


インストール

インストール方法は次の1行で簡単です
# whisperのインストール
!pip install git+https://github.com/openai/whisper.git

次はライブラリのインポートです
# ライブラリのインポート
import whisper
model = whisper.load_model("base")
これも2行でできます

用意が出来たら
音声ファイルを置きましょう

配置場所はファイル置き場です
スクリーンショット 2023-01-07 16.38.48


こんな感じでファイルを配置しましょう

文字起こしをするのは次のコードです
# 音声ファイルの書き起こし実行
audio_file_path = "ファイルパス"
result = model.transcribe(audio_file_path)
print(result["text"])

音声ファイルの中身によって
結果は変わります

いろいろ試してみて下さい

動画ではいくつかの
音声文字起こしをしているので
そちらも参考にしてみて下さい


今回はここまでです
それでは

今回は2枚の静止画から
クッソかわいい動画を作成してみました

解説動画はこちら





今回使用するのは
FILM(Frame Interpolation for Large Motion)
という技術でs

ニューラルネットワークを用いた
フレーム補間技術になります


2枚の静止画の間を繋ぐ様に静止画を作成して
動画化する事ができます

デモなどはこちらから参照する事ができます

FILMのgit

こちらのサイトのデモを使って
静止画を動画化してみました

1フレーム目はこの画像
frame1


2フレーム目はこの画像です
frame2


この間のフレームを補完してくれる訳ですね

出来上がったのはこんな感じ

71dt0-6t2tb


2枚の間の違和感なく
フレームが保管されているのでは
ないでしょうか!!

めちゃくそカワイイですねーーーーー

こんな感じで
2枚の静止画を用意すれば動画にできるので
たくさん用意すれば、動画作品を
作る事も可能ではありそうですね

うまく使えば面白い技術だと思いますので
試したい方はデモサイトを
覗いてみて下さい

それでは

今回はソーシャルハッキング を用いた
携帯番号推測方法についてです


解説動画はこちら



・今回のテーマ

電話番号が気になっちゃう
っていう人のために

気になる相手の電話番号を
推測する方法についてお伝えします

これはソーシャルハッキング
を用いた電話番号推測法になります

まずは、携帯番号占いに誘う必要があります

・携帯番号占い
琉球風水志シウマさんがやっている
携帯番号を用いた占いのことです

携帯番号下4桁を足した数字で
占いを行い、結果を伝えています

数字が持つパワーで運気が変わるとか
変わらないとか・・・

ただ今回は、占いを行う必要はありません
占いのフリで良いので
占い自体を覚えなくても行えます


・番号推測の方法
「携帯番号占い」出来るていで
相手に数字を聞く事が出来ればOKです

ここでは、進化した「携帯番号占い」を
行うていで進めていきます



・番号を聞く手順
1.「上4桁(4-7桁目)」「下4桁(8-11桁目)」の
合計値と末尾の値の4つを聞く

(上4桁の合計値) , (上4桁の末尾)
(下4桁の合計値) , (下4桁の末尾)

2.占いの結果は適当に答えるも良し
真面目に答えるも良し

3.適当に「ラッキカラー」と
「開運グッズ」とかを答えておけば良い

4.上4桁と下4桁を推測して
最後に080 or 090 をつける


・電番の一部を推測するコード


聞いた数字から、電番を予測していきましょう
合計値と、末尾の数字から
その4桁の候補を出すコードがこれです

例:下4桁の合計値が「30」で末尾が「3」の場合
import itertools

def check_num(num1,num2):
    result = []
    L = [str(i) for i in range(10)]
    for p in itertools.product(L,repeat=4):
        ans = sum([int(a) for a in p])
        if ans==num1 and int(p[3])==num2:
            result.append([int(a) for a in p])
    return result

# (合計値 , 末尾の数字)
check_num(30,3)
[[9, 9, 9, 3]]


こんな感じで関数の引数に
合計値と末尾の数字を入れてあげると
その4桁の候補が出ます

これを上4桁、下4桁で行い
080 or 090 をつければ完成です


・合計値の組み合わせの数

問題になるのは、合計値の組み合わせ数です
どれくらい存在するでしょうか?
import itertools
import matplotlib.pyplot as plt
%matplotlib inline

result = {}
L = [str(i) for i in range(10)]
for p in itertools.product(L,repeat=4):
    ans = sum([int(a) for a in p])
    if ans in result:
        result[ans] +=1
    else:
        result[ans] = 1

plt.figure(figsize=(10,5))
X = [k for k,v in sorted(result.items())]
Y = [v for k,v in sorted(result.items())]
plt.bar(X,Y)
plt.show()
download

合計値は0 - 36までの37通りあり
合計値18の組み合わせが一番多いです

この付近に当たってしまうと
組み合わせ数が多すぎて特定できないかもしれません

ただ合計値1桁や30以上は
組み合わせが少なくなるので
一意に特定できる事もあります




・まとめ
うまく話術を磨いて、数字を聞き出せないと
ダメだけど・・・頑張りましょう!!!!

合計値が5以下や30以上の場合は大チャンス!!!

合計値が13-23あたりだった場合は、キツ目

合計値が18あたりだった場合は、あきらめよう

さらに末尾2桁教えて貰えば、勝てるかも

プログラミング技術が無くても
話術があれば何とかなる

ってか、直接電番を聞ければ
占いをする必要も無いので
小細工しない方が早いかもしれません

まあ、聞けない方々のための
姑息な方法になりますので
是非試して遊んでみて下さい

それでは

このページのトップヘ