とある大学生の勉強メモ

バカでもいいじゃない,子供でもいいじゃない.

PythonでCSVファイルからシャピロウィルク検定

CSVファイルを読み込んで,シャピロウィルク検定するところまでのメモ書き PythonCSVにappendすると, f:id:amakazeryu:20190905111029p:plain という風に一行に並んでしまったので,データの形を変えてnumpyの配列に入れました.

import numpy as np 
import csv
import matplotlib.pyplot as plt
import scipy.stats as stats

f = open("name.csv", "r")#nameというcsvを開く
csv_data = csv.reader(f)
data = [ e for e in csv_data]
f.close()

x= np.zeros(0)
for i in range(50):
    x = np.append(x,float(data[0][i]))#データの形を変更してるところ

print(stats.shapiro(x))#シャピロウィルク検定 (W,p)で出力
plt.hist(a, bins=20)#ヒストグラム
stats.probplot(a, dist="norm",plot=plt)

Pythonで音声ファイルを任意に再生・停止させる

 Pythonでwavファイルを再生しようとする場合、pyaduioを使って以下のようなコードで再生すると思います。

#file name is open.py

import wave
import pyaudio

#開きたいWavファイルを引数
def openWave(name):
    #開きたいファイルをここに
    wf = wave.open(name, "r")

    # ストリームを開く
    p = pyaudio.PyAudio()
    stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
                    channels=wf.getnchannels(),
                    rate=wf.getframerate(),
                    output=True)

    # チャンク単位でストリームに出力し音声を再生
    chunk = 1024
    data = wf.readframes(chunk)
    while data != b'':
        stream.write(data)
        data = wf.readframes(chunk)
    stream.close()
    p.terminate()

しかし音声が終了するまでwhile data != b'':文が閉じてくれないので、停止再生が任意に行えません。そこで、以下のようなサブプロセス実行用のファイルsub.pyを作り、main.pyからサブプロセスで実行する方法を考えました。

#file name is sub.py
#サブプロセスで実行されるファイル
#CMD上で python sub.py name というコマンドでname.wavファイルが再生される

import sys
import wave
import pyaudio

args = sys.argv

wf = wave.open(str(args[1])+".wav", "r")
p = pyaudio.PyAudio()
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
                channels=wf.getnchannels(),
                rate=wf.getframerate(),
                output=True)

# チャンク単位でストリームに出力し音声を再生
chunk = 1024
data = wf.readframes(chunk)
while data != b'':
    stream.write(data)
    data = wf.readframes(chunk)
stream.close()
p.terminate()

上記のsub.pyを下記のmain.pyからサブプロセスで動かします。

#file name is main.py

from msvcrt import getch#キーボード入力用
import subprocess

def main(name):
  while True:
      key = ord(getch())#キーボード入力を受け付けます
      if key == 72: #上矢印ならnameファイルを再生
          cmd = "python sub.py "+str(name)
          pro = subprocess.Popen(cmd)#Popenならサブプロセス中も、次のメインプロセスが実行される
      elif key == 13:#エンターなら終了
          pro.terminate()
          break

サブプロセスで再生を実行することで、main側から任意に再生停止をするコードを書くことができました。 本日は以上です、お疲れ様でした。

理系学生が政治・法律を学ぶ際に必要となる本質的な基礎知識 ~最近の話題にのせて~

目次

初めに

 自然科学系の学生が政治や法律など一般に文系と呼ばれる中でも理論よりな学問を勉強する際,どこから手をつければよいか分からないことが多い.基本と呼ばれても,何が理系学生にとって基本となるのかなかなか見えてこない.ということで,本質的かつ基本事項を対立構造で列挙する.とりあえずこれを抑えておけば僕程度のリテラシーは得られると思う.

 なんか吉本を例にすると分かりやすい(笑)

 

悪と正義 ~主観でしか語られない概念~

f:id:amakazeryu:20190730142314p:plain

 上図より誰が悪いか,誰か正しいか,ということに出口は見えない.理由は良い悪いは常に主観でしか語られないからである.主観から見て価値観が等しいものを良いと言い,異なるものを悪いという.とはいえ世論は一般に誰が悪いかということを決めたい人が多いので,世の中のマジョリティと価値観が異なるものを悪という.この考えが次の罪と罰に繋がる.

罪と罰 ~常に付きまとう~

 ドストエフスキー読もう(笑).罪──誰が悪いのかということは罰がなければ法律上決めることができない.罪には常に罰がつきまとう.罰がないところに罪は存在しない.ばれなければ犯罪ではないということは,これを意味している(と思う).捕まらず逃亡する者はずっと警察に怯える生活をする.その生活自体が罰であり,その罰を15年履行することで,罪が解消される時効となる.この辺りは法律を作った時点の人が賢いと思う.また一般が充分罰を与えたと認識されると,その罪は一般に解消したということになる.

f:id:amakazeryu:20190730142851p:plain

 この円グラフほど,使えない資料はないということである.ちなみにこの騒動の本質的問題は吉本興業の事業形態である.お笑い界アップデート,したいね.

民法と刑法 ~意外に知らない違い~

 法律──別名,罪発見機および罰量産機.司法国家において,法律上の罰は常に裁判を通してしか与えることができない.刑法は検察と呼ばれる警察のお友達が,裁判を加害者に対して起こす.刑法だと罰で刑務所行きチケット・地獄行きチケットを与えることができるようになる.民法はお金しかもらえません.

 刑法の対象はそれこそ法律勉強しないと細かく分からないが,殺傷・盗品など一般に悪だと言われている事件が対象になる.事故や人間関係のいざこざは民法になる.

 吉本に話が戻ると,誰かが訴えないと法律上で誰かが悪いということは規定できない.法律上の罰が生まれないからね.だから世の中からバッシングや停職を芸人さんたちへの罰として罪を解消させ,問題の焦点を企業形態に移した方が発展的・未来志向な議論になる.

倫理と法律 ~ほぼ同じもの,違いは時間軸~

 倫理は常に変化している,今も.法律はある時代の倫理を一度文章にしてフィックスするものである.当然法律も変化するが,変化の時間単位が倫理に比べて遥かに遅い.この倫理と法律の差分及び,法律制定のディレイをなるべく小さくすることこそ,法治国家が目指すことの一つといえる.ディレイが大きいと”裁けない”,”技術開発できない”などが発生する.

ãnhk ã¹ã¯ã©ã³ãã« ã¢ã³ã±ã¼ããã®ç»åæ¤ç´¢çµæ

 割と哀しみが生まれる放送法NHKスクランブルの例.

権利と義務 ~常に付きまとう~

 権利は常に義務を払わないと得られない.国民の義務を果たさない人に,国民の権利は与えらない(与えられてるけど笑).やっぱり世の中の多くは権利ばかり主張して,義務に焦点がいかない人が多い.権利を得たくば,義務を払わなければいけない.「これしたい」「あれしたい」といって,「でもそれはしたくない」という子供を思い出そう.何か対価を払わなければ,得られるものなどないのだ.

 モノを所有する権利には,お金を払う義務が生じる.大学で講義を受ける権利は,勉学をする義務(&授業料,入学試験)を履行することで得られる.権利と義務は結構役に立つ対の概念なので押さえておきたい.

終わりに

 三権分立選挙制度,法律改正手続きなども所詮具体的なことだと思い,より抽象度を上げて本質的な基本事項をまとめてみました.言われてみれば,そうだねと思うことが多いと思います.是非考え方パクって使って下さい.あとなんか漏らしている基本概念ありそうな気しかしませんが,見つけたら随時更新.オファーがあれば,経済編やってもいいかも.本日は以上です,お疲れ様でした.

次回予告

 経済の本質とは分配である.しかし平等にすることは目的ではない.なぜなら差異がなければ価値が存在しないからだ.差異なき世界に優越の幸福は生まれない.そのことを理解した者が,民草に平等”感”を与えて秩序をコントロールしているに過ぎない.資本主義が生み出した怪物達の思考プロセスに迫ってみよう.知らんけど.

人文系の学生にありがちな論理的ミステイク

 一年に一度は人文系のゼミ型講義に参加しているどこぞの自然科学の研究室学生.ディスカッションをしていて覚える違和感を紹介してみようと思う.

目次

f:id:amakazeryu:20190726140549p:plain

話が発散しがち

 問題の原因となる要素をいたずらに増やしがちなことが多い.そして大抵最後には「難しいですよね」というのがお決まりとなる.とりあえず言ってみた,けど何がどう問題と関係しているのかは知らないけど,というのが非常に多い.

問題提起の方向が具体的

 話が発散する際は大抵問題提起の方向がおかしい.当たり前なことだが,細分化すれば問題数は増える.差別のことを考える時にジェンダーも部落も人種も考え,最後には人それぞれなどと言いだせば,問題の種類はいくらでも増やせる.問題提起は抽象の方向,つまり本質的なことを問題として挙げるべきなのに,具体的事例ばかりで問題提起されても結局一般的な解決策など生まれようはずがない.一般的な解決策が見えづらいというのは知っている.けど何かしらの解決策を提示しなければ,文句を言うだけの5chラーと同じ.

もはや問題が解決されないことを望む

 自分達のアイデンティティを保護する為に,問題が解決されては困るという姿勢すらある.ある学生は問題提起をすることに意義を感じているようだが,それだと当然解決されては困るのだろう.そして解決したと万人が思っても,無意識な差別をしているとかいう表現をもってして,問題があるのに問題に気付いてないよね,などと宣う.彼らは問題が解決されると困る人達なのでしょうかね.

大抵議論は傷のなめ合い

 議論をするのはお互いの研究を励ますため.本書が最終的に言いたいことは勇気をくれること.という意味不明な感情論に話を持っていき,最終的には議論で相手を傷つけるのを怖れて,傷のなめ合い行為が始まる.議論で精神にストレスが生まれることを善としない人達.どうしてそうなるんだ.

ロジックアレルギー

 結構困ってしまう.ロジック完全崩壊状態でも,突っ込んでくるゾンビモード.彼らがいうのは”世の中は論理で動いているわけじゃないYO”.そして感情を大切にしようという.別に大切にしていないわけじゃなく,一般的な解決策を探る学術をしたいから,わざわざ論理的な議論をするんだけど.学術しないなら,居酒屋で喋ってくれよ.論理でものを喋ると,机上の空論でしかないという非難を頂戴する.思い出すのは夏目漱石”こころ”の「よく男の方は議論だけなさるのね.よくも空の盃でよくもああ飽きずに献酬ができると思いますわ」ですね.

数式アレルギー

 高校生で数学に挫折して以降,数字は人を誤魔化す為のツールと半自動で見なしてしまう人達のこと.統計アレルギーにも発展しやすい.結構いる.数字じゃないよ,数学だよ,といっても彼らには通じない.見たことのない文字が出た瞬間に,憤りを見せてくる.数式を見た瞬間にそのプレゼンを聞かなくなる.こういうことは頻繫に起こる.かといって論理的に喋っても,ロジックアレルギーを引き起こす人が多い.結局何も考えてないという意思表示だと思うしかない哀しみ.

定義されない言葉

 科学は定義しがちと揶揄されがち.けど定義されない言葉をふわふわ使う人達の方がよっぽど議論してないと思う.そしてそこを真面目に考えたこともなさそうな雰囲気すらある.感情とか社会とか,よくも適当に使いなさるのねと言われたらどうするんでしょう.感情と情動,認知と知覚,意味と意義,使い分けている人がどれだけいるのか.定義してドヤァしたいわけじゃなく,意味をクリアにしたいだけなんですけどね.

 

まとめ

 あくまで一部の話です.そして言葉にそこまで重みがないのが世の中のマジョリティだと思います.重みというのは一つ一つの言葉に対して意味をどれだけ付与されているかということです.自然科学系の研究室にいくと,そこには本質派な議論を行う先生が多いと思います.扱う内容もそれに向いている内容が多いです.従って言葉の重みも大きくなる傾向があります.その点が大きなメリットなのかな.本日は以上です,お疲れ様でした.

スピーカーを分解してみた

 今度はスピーカーを分解してみました.スピーカー部分だけなら,秋月電子で普通に売ってます.”小型スピーカー 自作”などで検索すると出ると思います.リンクがいつ切れるか分かんないですが,RSホームの小型スピーカーのリンクを一応貼っておきます.

https://jp.rs-online.com/web/p/miniature-speakers/7542090/

f:id:amakazeryu:20190724101559p:plain

 

 今回分解したスピーカーはEWA A106 ポータブル mini ワイヤレス Bluetooth スピーカーです(下記写真).Bluetoothとバッテリーがついてくるので,なんとなくお得感を感じます(感じよう).

f:id:amakazeryu:20190724095907p:plain

 

 とりあえず,裏返してレバレッジで底を開けます.

f:id:amakazeryu:20190724100048p:plain f:id:amakazeryu:20190724100106p:plain

 

 次に基盤を取ります.

f:id:amakazeryu:20190724100201p:plain f:id:amakazeryu:20190724100223p:plain

 

 表にして,カバーを取ります.盗賊の7つ道具と呼ばれる針金を穴に通すと簡単に開けられると思います.

f:id:amakazeryu:20190724100640p:plain f:id:amakazeryu:20190724100659p:plain f:id:amakazeryu:20190724100732p:plain

 

 基盤とスピーカーのはんだ部分を取って,さあ本体とスピーカーを分離だ.この手法イマイチかもだが,ピンセットみたいな尖ったものをぶっ刺して抉じ開けた.ビスで固定してくれよん,と工学者は嘆く.

f:id:amakazeryu:20190724101017p:plain f:id:amakazeryu:20190724101034p:plain

 

 取り出したスピーカーを適当な銅線で再はんだ付けすればOK

f:id:amakazeryu:20190724101129p:plain f:id:amakazeryu:20190724101154p:plain

 

 なんでもいいけど,はんだで銅線の先端をコーティングする際,フラックスを使えば素人でもきれいにコーティングできます.魔法の液です.

f:id:amakazeryu:20190724101307p:plain f:id:amakazeryu:20190724101330p:plain

 

 2個ほど分解しました.下は分解後.いい勉強になったと思いますが,自作するなら,個別に買った方が安いし断然いいよ.

f:id:amakazeryu:20190724101405p:plain

 

 今回は以上です.次は自作コーンからの自作スピーカー作成までをお届けします.お疲れ様でした.

 

イヤホンを分解してみた

 小さなスピーカーが欲しくてネットで探したが、中々見つからないので自作することにした。イヤホンへの電圧を大きくすれば、磁石による空気振動が大きくなるとか言うが、イヤホンの電気信号が空気振動に代わるまでの機構をそも理解していないので、イヤホンを分解して見ることにした。

試したのは100均のイヤホン。

f:id:amakazeryu:20190712134707p:plain
100均イヤホン分解前

スピーカーでいうところの箱部分(音を共鳴させて大きくさせる外周部分とでもいうか)を取り除くと、こうなる。

f:id:amakazeryu:20190712134928p:plain
イヤホンの中身

それぞれは銅色のやつがボイスコイル,透明のフィルターがコーンの役割を持っている. 良いイヤホンというのは,コーンの張り具合が適切で共鳴によって特定の周波数を高めてくれている. 張り方が悪いと,周波数がバラバラになって,ノイズっぽく聞こえるんだと思う.

f:id:amakazeryu:20190712143913p:plain
分解部品

ジャックからの有線は、ボードにこういう風に接続されている。こいつで磁場を生むようだ。

f:id:amakazeryu:20190712143940p:plain
電気→磁性

電気で磁性を生むことで、銅色のボイスコイルを上下に動かして、空気振動を起こしているようだ。 円形電流の中心の磁場H[A/m]は、電流I[A]、半径r[m]に対して、

 H = I/2r

であり、可変抵抗がつまみとなって電流を制御=音のボリュームを制御している、と思われる。

もう一度組み立てると

f:id:amakazeryu:20190712144127p:plain
組み立てたスピーカー

これがダイナミック駆動という、大きな周波数でボイスコイルを震わせることで、音を効率よく出す手法っぽい。 僕がぽんと渡されたのは、最後の組み立てたやつ。最初は何が何だか分からなかったけど、ようやく少し理解したっぽい。

DAVIDの導入 リアルタイム音声フィードバックのソフトウェア

 前置き

 マイク入力した音声をリアルタイムでイヤホンからフィードバックしてくれるデジタルプラットフォームDAVID(Da Amazing Voice Inflection Device)の導入に関して,備忘録を取る.

 

 DAVID自体のリンクは

http://cream.ircam.fr/?p=44

 

 一応,開発者達はフルペーパーを出しており,リアルタイムで音声フィードバックすることで情動が変化したそう.

https://www.pnas.org/content/113/4/948

 

 日本語の論文解説記事は,

https://www.waseda.jp/top/news/36483

 導入

環境

Windows10

 

・Maxをインストール

 DAVID2.0以降はMaxというオーディオヴィジュアルプログラミングソフトをインストールする必要がある.

 Maxのインストール場所.

https://cycling74.com/downloads 

 

・DAVIDをインストール

 DAVIDのインストールにはforumnetの会員登録が必要なので,適当に済ませる.下のリンクで好きなヴァージョンをインストールする.

 DAVIDのインストール場所.

http://forumnet.ircam.fr/shop/en/forumnet/96-david.html 

  

 インストールしたらMax Projectファイルとして,アイコン付きであるので,ダブルクリックで起動.

 起動したらこんな感じ.これ出たらOK

f:id:amakazeryu:20190704143956p:plain

 使い方は習うより慣れろって感じ.DAVIDのリンクにドキュメントがあるが,GUIなので触っていたら分かると思われ.

 今回は以上です,お疲れ様でした.