Django を使って、gpt-4-visionの応答を簡単に得られるサイトを作ってみた

 初めましての方ははじめまして。UEC19-23、現M1のazarasingです。学部の時には調布祭実行委員会とMMAに参加していました。去年まで、調布祭の期間は付きっ切りで機材運用などしていましたが、今年は特に何もせず、平和な文化祭を... というわけでもなく、普通に講堂卓のミキサーの前にいました(何故?)。

misskey.io

 今回の記事はそんな孤立化した機材周りの知見を後輩に薫陶するための記事ではなく、普通に面白そうなことをしてみたよ~みたいな記事です。

この記事はUEC Advent Calendar 2023の8日目の記事です。

adventar.org

前回はみのさんの「金を使った話と金を稼いだ話 - 報告書」でした。

meeeeenow.hatenablog.com

稼いだゲルトは消えものですから、使わなければ腐ってしまいます。積極的に散財して、経済に立派に貢献しましょう。僕は、Meta Quest 3に散財しようとしてやめるサイクルを10回は繰り返しています。

UEC Advent Calenderは、無印も埋まらない年もありますが、今年はその2まで埋まっています。年々、規模が拡大していますね。来年はその3ができてそうです。 前回のその2の記事は「あかあくさんの アニメオタクのためのサイトを作った」でした。

anirishu.vercel.app

ニコ厨なので、凡例にニコニコ動画がないのが少し不満ですが、いいサイトだと思います。僕の場合ブログ|サイトを作っても、運用というか、維持がメンドクサイので公開しなくなってしまいました... 公開するだけで:偉業:ですが、OGPでちゃんと整備する技術力を感じました。

他のUEC Advent Calender その2の記事もぜひご覧ください

adventar.org

OpenAI - GPT-4-Vision

 ついにというか、やっとというべきか、OpenAIのGPTモデルに画像を読み込めるタイプのモデルが新登場しましたね。原理的には、画像データをテキストデータと十把一絡げに強引に学習しただけっぽいですが、120km/hで走る車がちょっとの段差をものともしないのと同じで、OpenAIが保有する圧倒的リソースを前にすれば些細な違いだったらしく、gpt-3.5が出てから1年と経たずして、満を持してのご登場、それがGPT-4-Visionです。このAPIを今回はいじっていきましょう。

 今回のリリースではほかにもオリジナルのpromptを調整して、便利なgptモデルを自分で作成できるGPTsのようなサービスもリリースされ、APIをいじる意味なんてだんだんと無くなっているような気もしますが、システムは何も動作だけをその目的とするのではなく、自分で作ったUIを同時に組み込んで初めてモノになるとも言えます。画像を入力できるようになったことでより一層、その差別化は必要でしょう。

 この記事ではPythonフルスクラッチWebサービスを作成するのにつかわれるDjangoを利用してOpenAIのAPIGUI経由で利用できるようにしていきましょう。

完成系のイメージ、アイコンをクリックするとそれぞれのプロンプトが呼び出されて、送信ボタンを押すとgptの答えが返ってくる。

Djangoでの入出力実装

僕はめんどくさがりなので、Pycharmを利用してDjangoの初期プロジェクトを作成します。

Pycharmで新しいDjangoプロジェクトを作成

こんな感じ。あらかじめopenaiやらdjnagoやらpillowやらを入れておいたインタプリタもここでセットしておきます。

まずは、setting.pyに追記して、投稿された画像の保存場所とopenaiのapikeyを設定しておきましょう。

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

MEDIA_URL = '/media/'

OPENAI_API_KEY = "sk-v========="

アップロードされた画像を格納するmodelを作成し、このmodelがopenaiのgpt-4-visionにバイナリ化した画像とpromptを送ります。

from django.db import models
from gpt4_vision_test.settings import OPENAI_API_KEY, BASE_DIR
from openai import OpenAI
import base64
import os

# Create your models here.

class UploadImage(models.Model):
    image = models.ImageField(
        upload_to='img/'
    )

    def gpt_process(self, prompt):
        base64_image = encord_image(str(BASE_DIR) + self.image.url)
        client = OpenAI(api_key=OPENAI_API_KEY)
        response = client.chat.completions.create(
            model="gpt-4-vision-preview",
            messages=[
                {
                    "role": "user",
                    "content": [
                        {"type": "text", "text": prompt},
                        {
                            "type": "image_url",
                            "image_url": {
                                "url": f"data:image/jpeg;base64,{base64_image}"
                            }
                        }
                    ]
                }
            ],
            max_tokens=1000,
        )
        return response.choices[0].message.content

def encord_image(image_path):
    with open(image_path, "rb") as image_file:
        return base64.b64encode(image_file.read()).decode("utf-8")

あとは、view.pyに受け渡しのコードを書いて完成です。 実際の応答を見てみましょう。

実際の応答例

唐獅子図屛風

唐獅子図屏風 右隻は、右端下部の狩野探幽による極書によって、桃山画壇の巨匠・狩野永徳の数少ない確証的な作品として名高い。岩間を闊歩する雌雄の堂々たる獅子の姿は、実に力強い筆法で描かれ、単純な図様ながら、その迫力、勇壮さには、本屏風が永徳自身の作品であることを疑う必要はない。左隻は、後に狩野常信が右隻の図様にあわせて制作したもので、今日は一双として伝わる。明治21(1888)年に毛利元徳より献上。

六曲一双の屏風の右隻側で二匹の獅子が描かれた屛風絵です。説明文はこの屏風を保有している宮内庁のHPから抜粋したものです。 これを獅子として認識できる人は日本人でも半々だと思いますが、gpt-4-visionはどうでしょうか。

なぞかけbotにこの画像について聞いてみましょう。

なぞかけボットの結果、あんまり巧くない

やっぱり、なぞかけは苦手だったかな...? 巧いっていうのは例えば、「この画像とかけまして、ボタンを掛け違えた服を着ている人にするアドバイスと説きます。」みたいなことを言うと思うので、そもそもgpt-4自体がなぞかけが苦手なのかもしれません。 とりあえず、この絵を評価してもらいましょう。宮内庁のHP文章みたいな文章が出てくることを期待します。

ありゃりゃ

著作権ですか... 人間が国宝絵の論評をするという点では著作権はかすりもしませんが、GPTモデルとなれば話は別なのかもしれません。 gpt-4-visionが画像をどのように分析しているかと言えば、画像をある種細切れにして、一色太に学習しているとも言えます。outputは文章ですが、コラージュ画像をその過程で生成しているという解釈もできなくはありません。そういう意味では著作権が現状のままである限り、人間の仕事は奪われなそうですね。

まぁ。もう一回やれば、ちゃんと答えを返してくれます。

この絵画の評価は以下のとおりです:

  • [技術力] : 細部にまでこだわった緻密な筆遣いと、動きのある姿勢が見てとれます。獅子の筋肉や毛並み、そして表情に至るまで、非常に高い技術力が示されています。

  • [想像力] : 獅子が日本の伝統的な絵画にしばしば描かれる題材であることを踏まえると、画家は古典に則った想像力を発揮しています。しかし、獅子のポーズや表情には独自の解釈が盛り込まれており、創造性が感じられます。

  • [色彩] : 色彩は自然で抑制されたパレットを使用しており、和紙の背景に落ち着いた色彩がうまく映えています。金色の箔がアクセントとなり、作品に豪華さと深みを与えています。

  • [感情] : 二頭の獅子からは強さと動きのエネルギーが感じられます。一頭が威嚇するような勢いを見せ、もう一頭が静かに構える様子は、力強さと落ち着きのコントラストを生み出しています。

  • [テーマ性] : 獅子は力と権威の象徴であり、この作品はそうした意味合いを含む伝統的なテーマを採用しています。獅子の姿を通じて、守護や勇敢さのメッセージを表現している可能性があります。

少し、比較してみましょう。

宮内庁 目次 gpt-4-vision
獅子 映っている動物 獅子
2匹 動物の数 2匹
岩間を悠々闊歩する      動物の様子 威嚇するようなエネルギーと静かに構える様子
力強い 緻密な
  • 獅子の様子について、二つの対になっているという解釈は狛犬の阿吽の様子や風神雷神の様子に該当するような解釈と混ざっている可能性がある。
  • 筆遣いについては、緻密と力強いとは大きく違う気がするので抜き出してみた。これはどちらかというと宮内庁側の説明の権威性が表れているようにも見える。

画題としての獅子をきちんと認識しているようです。細かな違い等はあるものの、晦渋な文章ではないと言える。逆にgpt-4は文体を変更できるため、宮内庁の文章のほうが詰屈聱牙に陥っているといえるかもしれません。*1

終わり

gpt-4-visionをwebから試せるようなDjangoアプリを作って、実際のgpt-4-visionの挙動を観察してみました。 gpt-4が今できること、できないことをきちんと理解して、使いこなすことがこのGPT時代に求められることのように思えます。

こんな記事でいいんですかね。次回はへるくんの普通自動車免許とった話です。

免許を取ると、世界が広がります。都会人にはあまり知られていませんが、日本には車でしか行けない場所のほうが多いですよね。 どんな記事になるのでしょうか。楽しみですね。

helkun.dev

*1:こんな文章を書いておいて、よく言うよっていう突っ込みが想像できますが

「君たちはどう生きるか」感想 ネタバレ80%

こんにちは。

いやはや、宮﨑駿の最新作がついに公開されました。

私は、公開日最初の回を観に、立川のシネマシティに行きました。もう10年ぶりともなる宮﨑駿新作アニメともなれば、観ない理由が見当たりません。シネマシティにわざわざ来るような連中しかおりませんので、上映が終わったら拍手喝采スタンディングオベーション... のはずですが、私も含め「いったい何をみせられたのか」という気持ちでいっぱいで、拍手もまばら。この日は平日だったので次の回の予約はできず、一体何をみせられたのか、何を伝えたかったのか、そんなことをずっと考えながらの帰路でした。

 

二回目は翌日のこれもまた朝一に、バルト9のD列が空いている(Dolbyで足が伸ばせる)を見て、即効予約して見に行きました。

日にちを一日置いたのがよかったのか、二回目の鑑賞では宮﨑駿が何を言いたかったのか、何となく分かってきました。

そんな分かったことをとりあえずアウトプットしてみる。そんな感じの感想です。

続きを読む

すずめの戸締りの感想という形の何か

すずめの戸締りの感想という形の何か

どうも、azarasingです。UEC19でMMA所属、最近はだいぶ調布祭の関連の活動も収束してきました。今年も講堂のPA卓で四苦八苦してましたが、それ以上の仕事も特に目立ってなくという感じでした。

そんな感じで調布祭期間前にも関わらず、すずめの戸締りの封切をすることができました。そんな話をしようと思います。

ちなみに、僕は『君の名は。』は劇場まで足を運びましたが、『天気の子』に関しては足を運びませんでした。なぜなら、必要性を感じなかったからです。そんな人間が書く感想であることを留意して以下読んでいただければと思います。ちなみに別にみて欲しいとかないので、ネタバレをじゃんじゃんしていきます。僕の言ってることにケチャップを塗りたい人は映画を見てみてください。

これはmaccha Advent Calenderの23日目の記事です。

adventar.org

 

一言で言うと

今回のすずめの戸締り、一言で言えば「新海誠の反省文」であると感じました。

僕は『君の名は。』を見てそのあまりの災害に対する扱いに少し憤りを覚えてしまい、それでもと見た()『天気の子』の感想は、「愛はもう何もするな」でした。「新海誠にとって災害とは道具であり、その犠牲者もまた道具である。」そんなメッセージを得ても何ら文句は言えないものであったことは言うまでもありません。

それは、確かにセカイ系というジャンルの致し方ない点であることは言うまでもないことを理解していないわけではないですが災害というテーマをその中に取り入れた以上、何らかの形での罪滅ぼしのような形があるべきではないかというのが、僕の映画を見る前までの新海誠に対する考え方でした。

 

戸締りの意味

戸締りは安直にClosingと訳せる。しかし、英語タイトルはただSuzumeのみである。英語にあえて訳すと安直すぎるからだろう。冒頭の演出において主人公宅のドア、廃墟の扉等、戸締りに関する演出がきちんと印象付けられている。ここから言えるのは、戸締りという言葉に込めた想いをきちんと観客は受け取らなければいけないということである。

ここで戸締りということの意味を3つほど考えてみよう。

  • 映画の流れとしての戸締り(イベントとしての提示)
  • 新海誠の三部作の集大成としての戸締り
  • あの世との送別の意味での戸締り

映画の内容としては、各地の災害の原因として描かれる扉を日本各地を旅するしながら閉じていくというストーリーであるため、「戸締り」とはこのストーリーの流れを示しているということ。これは映画を一度でも見れば誰もが受け取るものである。

よりメタ的な考えをすれば、災害三部作として作られた本作品を一連の流れの集大成として考えるということである。これは少しうがった見方をする人は大抵思うことである。

この二つの他に、あの世との壁としての境界としての扉がある。

境界と文化

さて、文化とは常に「境界」から生じるものであると考える論がある。神社に鳥居があるのは神様の場所と人の場所というのを分けるためのものである。もっと原始的に言えば、人は他者を考えるときにはその人との違い,境界について常に思考する習性があるともいえる。この考えによれば死とは、境界が生み出す問題ともいえる。生物学的に考えれば生から死へは連続的に変化するものだが、人はそこに明確な境界を置いている。どんなに医学が発達しても、この境界を人類が排除することは無いだろう。

海は最も原始的な境界といえる。人類が誕生するはるか以前から陸地との境界として存在するそれは、「境界」として人類が文化を形成するのは必然である。昔の人々は海にあの世を見立て、海岸をあの世とこの世の境界として捉えた。例えば羽衣伝説などで天女が登場する場所は水辺であることや牛鬼が海岸から出現する恐ろしいものとして伝承されたりすることがある。これは海を異界として捉え、海との境界,潮(うしお)を畏怖した結果である(潮だから牛鬼なのだ)。

本作でも潮が登場する。宗太が閉じ込められた常世は海岸の浜辺だった。常世は主に草原として描かれるため、この表現に違和感を持った人もいるだろう。津波のメタファーとしてシンプルに捉えることもできるが、生と死の狭間に捉えられているための表現として捉えることができるだろう。水とは生と死を隔てる壁なのだ。だから本作に登場する常世は死者の赴く場所と言えど死者は一度も登場しないのである。

堤防は現代の潮といっていい。物語後半は東北の沿岸沿いを走るので否応なしに大きな堤防が登場する。海岸に対する人類の畏怖はより現実の構造物として顕現した。これを容赦なく見せてくる。僕はこれに死者に対するリスペクトを見た。

僕が10月に東北の被災地に行った時の写真(左上:三陸鉄道石浜駅から町の堤防,右上:岩手県宮古市に建設中の巨大堤防,左下:陸前高田ユースホステルと奇跡の一本松,右下:岩手県宮古市の旧市庁舎前の堤防(社会科の教科書で津波の写真がある場所はここ))

今日は何の日?

このアドベントカレンダーの投稿予定日は12/23である。この日は昭仁上皇のご生誕日であり、平成の時代は天皇誕生日であった。

なぜ、ここでこの話が出てくるのかといえば、閉じ師とは何か、モチーフにしているものは何かを考えた結果、これは宮中祭祀が基になっているのではないかという結論が出たからだ。

東京の後ろ戸の場所は明らかに旧江戸城、現在の皇居にあった。これは今までの映画のルールの例外といっていい。忘れられた場所、人の営みが消えた場所にあるはずの後ろ戸が東京のど真ん中にあるのは不自然だ。

ルールに沿わないことには意味があるべきだ。うん。

 

 

えっと… まぁ書いてもいいか…

 

 

これはやはり作中の世界では天皇左大臣の要石になったのだろうと考えた。主人公宗太は、要石の化身のダイジンという猫が好き勝手する様子に「気まぐれは神の本質だからな」と言った。神に接するにしてはタメ口で乱暴な接し方のようにも見える。しかし、同じ要石であるはずのサダイジンに接する宗太の祖父は要石に対して非常に丁寧な言葉で接している。これは仮説だが、姓名の宗像から考察するに、代々神職の家系であったことは想像に難くない。宗像祖父は、要石を神様のように扱うよう指導したのではないだろうか。なぜそのような指導をしたのかといえば冒頭の通りである。

だから宮中祭祀もなくなり、さびれたのではないか。旧江戸城地下にたとえ謎の空間があったとしてもそこに至るまでの警備が全くないのはやはりこういった理由があるのだろうか。

 

あんまりよくない所というか感情的な感想

まあ、ここまでほめても仕方ないので、最後ダメだったと思うところを語っていこうと思う。

これは最近の映画全般に言えることだが、分かりやすすぎて逆にテーマが浅くなるということはよくあることである。一番わかりやすい最後のカットを僕は問題にしたい。

最後すずめがお帰りというシーンで終わっていたら、一連のテーマにとても合う形で終われたと思う。震災が家族を別ち、ただいまは言えてもお帰りは言えなかった。そんなテーマをもっと推したいのなら最後はすずめが誰にお帰りを言ったかをあえて特定させない方がテーマとしてすっきりするはずであるが、それでは分かりにくいと判断したのか最後宗太が映るシーンが入る。これでは恋愛モノとして見れてしまう。あまり良い効果とは思えないと感じた。

こういった具合に、なんというか無駄というかより多くの人にテーマを分かってほしいという思想なのか知らないが、その性でテーマがずれているように感じる。多くの人はこの映画に満足するのかもしれないが、僕みたいに注目する映画があると必ず封切をしようと考えるような人間にとってみれば物足りない要素でもある。

セカイ系特有の犠牲のゼロ化に腹が立っていないわけじゃない。特に要石で犠牲になった人というものをもっと深く追求出来たのではないかということは付け加えておきたい。まぁこのテーマを加えると映画を見終わった後の後味が悪くなるかもしれないが、後味の悪さも楽しめる人種からすると何かすっきり来ないものがある。まぁ、『君の名は。』みたいに災害の犠牲が一切なかったことになるみたいな展開にならなくて良かったと思う。(僕は常世に時間概念がないという発言を聞いてちょっとこの展開を危惧した。)

多くの人はこのことにはあまり引っかからず、最後ハッピーエンドで良かった/主人公が頑張っている姿に感動したと思えると思うので、その点についてはオススメしたいと思う。

 

 

まぁ、ともあれ災害三部作から解放された新海誠が次に作る作品に期待したいですね。

 

読了:栞と嘘の季節

maccha Advent Calender 17日目の記事である。

adventar.org

 

米澤穂信著、『栞と嘘の季節』を読了した。

 

僕は、米澤さんの新作本を見かける度に購入している。『本と鍵の季節』の続編で、なかなかに良い設定になっていたこの前作の続編がまさかでるとは。前作の終わり方からして、この一本だけにするのかな?と憶測していたが、店頭で続編を見つけてこれは!と思い、すぐ購入してしまった。

 

読書感想文は趣味じゃないが、一応ブログに載せるのだからネタバレを考慮した感想の一つや二つ載せるべきである。

 

毒といえば、何色だろうか。僕はポケモンで育った輩なので、紫色が毒のイメージである。何故その色が毒かと言われると理由がそれ以上出てこない。

調べてみると、

  • 喪服などに紫があしらわれる印象があるため
  • 位の高い人が身に付けるため->毒殺

といった理由が主らしい*1。紫が冠位十二階の最上位に位置した頃から巡り巡ってゲームのグラフィックに生かされるようになるのだから感慨深い。

つまり、社会的地位と毒というものは切っても切り離せない関係にある。

 

子供のころ、道路脇に落ちていた枝は剣に見えた。それは子供ながら武器が欲しいと考えた深層心理がそれを具体化したともとれる。枝を学校の中まで持っていくことは無いが、ゴム鉄砲を懸命に作った時期もあっただろう。現代において工作技術のハードルがどんどん低くなりスマホサイズで3Dプリンターが持ち運べるようになればどうなるだろうか。

スマホというものは、現代人を大きく変えた。言論空間が昔よりも幼稚に見えるのは、やはりそこにアクセスするハードルが低くなったからだろう。今作の終わり方は一見不完全燃焼のように見えるが、炎上した投稿を消した後の行動としてみれば案外こんなものかもしれない。

 

こんな感想でどうだろうか。皆さんも是非

卒論で忙しい僕のBlender 3.5 Simulation Node ふれあい体験記

 

 どうも、azarasing(あざらし)です。調布祭実行委員会とMMAに所属しています。最近は調布祭も終わり(調布祭は恐らく電通大4年で最も忙しい人物の一人と化していた)、さてゆっくり本でも読む時間が取れるだろうかと思っていた所、卒論の構成をしなければいけないことに気づき、途方に暮れているわけですが、Blenderの最新機能が凄そうなのでこれは試してみなければとなり、水族館のふれあい体験コーナーよろしく、ナマコをフニフニ触るような気軽さと時間のかけ方でBlenderをフニフニしていきたいと思います。

 

この記事はUEC 2 Advent Calender 2022の16日目の記事となっています。

adventar.org

前回は 📸さんの「ESPnetで高森藍子の声を錬成した」でした。

 

momicolle.hatenablog.com

 

合成音声分野は現在活況を布いていて、僕はずんだもんを苛めることしかしていませんが、一度僕も機械学習をしたいと思っています。さて、いつになることやら。

 

また、同時並行で2021年のUEC Advent Calender主催のmaccha氏のためのAdvent Calenderが進行中です。過去の日付でも全然OKなので、Advent Clenderの空き,もといmacchaさんの心の穴を埋めてあげてください。

同日上がる、つまみさんの徒歩記事も必見です。

Blenderの最新版のダウンロード

Blenderとは?GeometoryNodesとは?については2021年のAdventCalenderですでに紹介しているのでそちらを参照していただきたいです。

azarasing.hatenablog.com

今回扱うバージョンはBlender3.5.0 Alphaです。

最近はBlenderの扱うバージョンが増えてきたので、管理するためにBlender Launcherをダウンロードしておくといいでしょう。

Blender Lancherの画面から、Geometry Nodes Simulationを選択してダウンロードします。

ダウンロード画面

 ダウンロード遷移

気長に待ちましょう

ダウンロードが完了すれば、Blender LancherからこのGeometry Nodes Simulationを起動できます。

僕は英語版のままで操作していきます。Blenderは日本語の設定がありますが、それで利用している場合、海外のチュートリアルを実践するのに苦労してしまうため、初心者でも日本語ではなく英語からBlenderに触った方が長期的にはいいと思います。

Simulation

Blender 3.5の開発では様々な機能が実装されつつあります。ここではその中でもSimulation機能をメインで見ていきます。Blenderの新しい機能が!とTwitterのTLに流れてくるものの大半が今はこの機能に関わることだと思います。

3Dモデリング統合ソフトというカテゴリで見れば、MayaなどではSimulation機能はありました。Blenderでも似たようなことはできなくはないですが、機能は限定的で例えば布のみに特化するようなものでした。このようなシミュレーション機能をより一般性を持たせたものがSimulation機能です。

Blenderにて、その初歩の初歩をやっていきたいと思います。先ほどダウンロードしたバージョンでBlenderを起動します。上のタブからGeometry Nodesを選択します。

そして、GeometryWindowからNewを選択して新しいGeometryNodesを選択します。


するとノードが生成されます。ここで、このノードを以下のように変えていきましょう。

この画像だけでは作れない人もいそうなので、下に説明を追加しました。

  • Add(Shift + A)から、Simulation -> Simulation Inputノードを出します。
  • Add(Shift + A)から、Simulation -> Simulation Outputノードを出します。
  • Add(Shift + A)から、Geometry -> Transformノードを出します。
  • Group Input ノードの Geometryの出力からSimulation Inputノードの入力のGeometryとつなぎます。
  • Simulation InputノードのGeometryの出力からTransformノードの入力のGeometryとつなぎます。
  • TransformノードのGeometryの出力からSimulation OutputノードのGeometryの入力につなぎます。
  • Simulation OutputのGeometryの出力からGroup OutputのGeometryの入力につなぎます

さて、Spaceキーを押すと、TimeLineが動作してキーフレームが動きます。またスペースを押すと止まります。しかしながらこの状態ではなんの変化もありません。

ここで、TransformノードのTranslationのxの値を0mから0.1mに変えて再度Spaceキーを押してみてください。

 

 

すると、動画のように横に移動していきます。

察しのよい方は既に分かったと思いますが、このTransformノードが移動偏差の代わりとして機能しています。Transformノードは、つながる前のGeometryに対して設定された座標分移動/回転するノードです。Simulationではそれが1F毎に繰り返されるため、今回の場合では直線に移動するような結果となりました。Simulationノードではこのように前後のノードの位置の変化をノードで表すことによって、Simulationを達成しています。

ナマコっぽモノを挑戦してみようかな

さて、コツもつかんだところで、ナマコっぽいものを再現してそれをつつくGeometryNodesを作って終わりましょう。

原理としてはこういう感じ

図解

あるポイントに対して表面からの距離rの大きさに依存する$\mathbb{F}_{1}$と$\mathbb{F}_{2}$をNode上で計算してそれをSetPositionノードのOffsetに加えます。

出来たのが以下のノードと動画

GeometryNodes

感想

手こずって、サンプルを見て回るだけになりそうだと思っていましたが、実際に自分で構想して30分ぐらいで作ることができました。それはこのシステムがそれだけ単純で分かりやすいということだと思うので、皆さんも是非やって試してみてください。

とは言ってもあくまでこのクオリティなので、本物っぽくこだわるのであればそれなりの技術と時間が必要だし、それを掛けることができるだけの可能性がこのSimulationNodeにはあると思いました。

 

さて、次回はAkitoshiさんの未定です。楽しみですね。

ハウリングの一要因とGEQ

どうもあざらしです。同時並行で調布祭の方でもAdventCalenderが進行中(内部のみの公開ですが)。そこに書いた記事をmaccha Advent Calenderでも紹介します。

 

前回の記事は、

そもそも、GEQって何?

EQとは

 EQとはイコライザーの略です。EQとは、音声や音楽の特定の周波数帯域の強さを調整するための機能です。EQを使用することで、音声や音楽の周波数バランスを調整し、特定の音域を強調することができます。例えば、低音や高音が強すぎると感じる場合は、EQを使用してそれらの音域を調整することで、音質を改善することができます。

 ミキサーでEQを使用する場合は、まずCHを指定しそのチャンネルのEQセクションを見つけてそこから特定の周波数帯の強さを調整することができます。一般的なミキサーには、低域、中域、高域といった複数の周波数帯域があり、各周波数帯域の強さを調整するために、EQには各周波数ごとにゲインをコントロールすることができ、これを使用して周波数帯域の強さを増減させることができます。また、一部のミキサーには、プリセットされたEQ設定が用意されている場合もあります。これらの設定は、特定の種類の音声や音楽に適したものが用意されていて、これらを使用することで、簡単にEQを設定することができます。確か、Si-impactかQuのどっちかにはこの設定があったはずで、Libraryの機能から参照できるはずです。


 大抵の場合、プリセットを利用するとうまく行かないケースが多いため、あくまで参考程度で見て置くべきでしょう。実際の所は個々の声音に合わせて逐次周波数帯について変更を加えるというのが良いと思います。

 

GEQとは

 GEQとはグラフィックイコライザーの略で、音声の周波数帯行き毎の強さをグラフで可視化し、それにあったようにそれぞれの強さを直接フェーダーで調整することができます。GEQを利用することでより高度な音声や音楽の周波数バランスの調整が可能になります。

 しかしながら、これらの調整は音声の各CHに用意されているものはなく、末端部に用意(音声の出力部)に用意されていることが多いです。

 何故、各CHごとに用意してくれていないのでしょうか。また末端部に用意するのはシンプルなEQのみではいけないのでしょうか。

 今回はこれらのことについて解説していきます。

 

GEQとフィードバック、周波数特性

音声系はフィードバック系をとる

ここで、単純な音響構成を考えてみたいと思います。壇上にマイクが一本置かれていて、壇上の人の声を増幅させる目的を持ってミキサーに入力されたマイク信号を壇上の備え付けのスピーカーから流すようなことを想定します。

 

ステージのイメージ図

この時にスピーカーから出る音がマイクに伝わり、再びスピーカーから出力されるというプロセスがフィードバックとなります。

フィードバックをとるということは周波数特性が存在するということです。出力が入力に戻り、再び出力されるというプロセスが繰り返されるため、この繰り返しプロセスによりフィードバックゲインを持つ制御系は周波数特性を持っています。

ミキサーでの伝達要素をF、スピーカーでの伝達要素をSとする。さらに、会場での減衰をRとすればこの時のブロック線図は以下のようになります。ちなみにこの時の伝達関数は$\frac{F(s)S(s)}{1-R(s)F(s)S(s)}$となる。ブロック線図からも明らかなように、このモデルはフィードバック系をとることがわかる。

ブロック線図


ラプラス変換を用いることで、数学的にこの形が周波数特性を持つことを証明できますがやりません。知りたい人は各自ググるか制御系の授業を受けてください。

これを周波数ごとのゲインの特性を表したボード線図で表すと以下のような形になります。

ボード線図のイメージ図


この時に特にゲインが上がっている周波数やその他高ゲインが連続しているような箇所における音が主にハウリングを起こしやすくなります。

実際の機器の例で行くと、大学の課外も所有しているElectro-Voice,SX300Eのスピーカーの場合以下のようなボード線図で特性が表されます*1

SX300の例

実際には周囲の環境の変化によってこの通りのボード線図を得ることはありませんが、各要素においてこのような周波数特性が知られています。

音響測定

実際の現環境のボード線図を計算によって得ることは不可能であるため、実際にはどの周波数でも一定の出力となるようなノイズ(Pink Noise)を出してそれを測定用のマイクで収音することで特性を調べ、どの周波数でも一定となるような調整を行います。

これを音響測定と言い、この時にグラフィックスによって調整をするためにGEQを利用します。

ミキサーに搭載されている周波数ごとの分布表示を見ながら、GEQの調整を行います。反応が大きくなった周波数においてはその部分のフェーダーを下げることでハウリングが起こりにくくなり、ミキサーの意図した音がスピーカーから出力されやすくなります。

 

音響測定

よって、末端部,出力においてはGEQによって出力している対象の各スピーカーの特性に合わせて調整を細かくする需要があるため、GEQは主に末端部において実装されています。


*1:Sx300 300-Watt Two-Way Compact Speaker System,ElectroVoice,https://products.electrovoice.com/binary/sx300.pdf

maccha Advent Calender開会のお知らせ

maccha Advent Calender 始まります。

どうも、MMAのazarasing(あざらし)といいます。調布祭も無事終わり、今年も講堂にて一日中、配信卓周辺で仕事をする人間と化していましたが、もう4年ともなればもはやそれも風物詩と化しつつ、来年はそれがない(はずだよね?そうだよね?)ので風物詩を過去のものとすべく、係いを解こうと躍起になっています。

閑話休題、AdventCalenderといえばMMAの偉大なる先輩であるwhywaita氏周辺のアドベントカレンダー、whywaita Advent Calenderがあります。

こんなAdventCalender、別に19の代にも在っていいだろうと始めたのがmaccha氏(抹茶🍵 (@macchaakamaccha) / Twitter)のためのAdvent Calenderです。

adventar.org

adventar.org

macchaさんも、作ったら最後まで埋めると提言してもらえたので、きっと埋まることでしょう。

maccha Advent Calenderに歓喜()するmacchaの図

僕もいくつか記事を書くので、赦してね (@ω@)>3