まるもの雑記

なにか作ったりとかゲームとか。

JavaでWAVファイル読み込み

久しぶりに時間が出来たので

音声ファイルを触ってみます。

 

フォーマットの確認

とりあえずwindows7のログオンの時の音を読み込んでみる

 

AudioInputStream input = AudioSystem.getAudioInputStream(file);
AudioFormat format = input.getFormat();

でフォーマットを取れるので

これをこんな関数に入れてみる。

    public static String getFormatString(AudioFormat format) {
        StringBuilder sb = new StringBuilder();

        sb.append("[AudioFormat] frameSize:" + format.getFrameSize() + "byte");
        sb.append(" Fs:" + format.getSampleRate() + "Hz");
        sb.append(" " + format.getSampleSizeInBits() + "bit");
        sb.append(" " + format.getChannels() + "ch");

        if (format.isBigEndian()) {
            sb.append(" BigEndian");
        } else {
            sb.append(" LittleEndian");
        }

        if (format.getEncoding() == AudioFormat.Encoding.PCM_SIGNED) {
            sb.append(" SignedPCM");
        } else if (format.getEncoding() == AudioFormat.Encoding.PCM_UNSIGNED) {
            sb.append(" UnsignedPCM");
        } else {
            sb.append(" NoPCM");
        }

        return sb.toString();
    }

[AudioFormat] frameSize:4byte Fs:44100.0Hz 16bit 2ch LittleEndian SignedPCM

これがWindowsの標準フォーマットらしい。

CDから取り込んだwavファイルも同じ結果になったので

CDと同じフォーマットを使っているようです。

サンプルデータ

普通の音声データだと正しく読み込めたかわからないので

テスト信号発生ソフト WaveGene

を使って0dBのサイン派を作ってそれを読み込みます。

 

コード

javaのintは4byteですが

サンプリングデータは16bitなので2byte

この変換がめんどくさいですが試行錯誤の末下記になりました。

 

    public void readWavFile(File f) {
        try {
            AudioInputStream input = AudioSystem.getAudioInputStream(f);
            AudioFormat format = input.getFormat();
            BufferedInputStream bufInput = new BufferedInputStream(input);

            byte frameBuf = new byte[format.getFrameSize()];

            int sampleSizeInBytes = format.getSampleSizeInBits() / 8;
            int chCount = format.getChannels();

            byte
buf = new byte[BYTE_LENGTH_OF_INT];
            ByteBuffer bb;

            ByteOrder order;
            if (format.isBigEndian()) {
                order = ByteOrder.BIG_ENDIAN;
            } else {
                order = ByteOrder.LITTLE_ENDIAN;
            }

            int offset = BYTE_LENGTH_OF_INT - sampleSizeInBytes;
            int shift = BYTE_LENGTH_OF_INT * 8 - format.getSampleSizeInBits();

            int count = 0;
            int value = 0;

            while (bufInput.read(frameBuf) > 0) {
                for (int ch = 0; ch < chCount; ch++) {
                    for (int i = 0; i < sampleSizeInBytes; i++) {
                        buf[offset + i] = frameBuf[ch * sampleSizeInBytes + i];
                    }

                    bb = ByteBuffer.wrap(buf);
                    bb.order(order);
                    value = bb.getInt() >> shift;

                    if (ch == 0 && count < 100) {
                        System.out.println(value);
                        count++;
                    }
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

でてきた出力をエクセルに貼り付けると

f:id:marumorix:20141224151428j:plain

1kHzの信号で44.1kHzのFsなので1周期は44サンプル

16bitなのでピーク値は2^15-1=32767

というのが期待値ですが

こんな感じになっているのでちゃんと読めているように見えます。

 

BIgEndianのファイルがないのでそれは出来ているか確認できないのと

サンプル精度が8bitの倍数でないとおかしなことになりますが

16bitと24bitくらいしか目にしないので

とりあえずあとにします。

 

 

 

 

日本の人口

少子高齢化といわれていますが

あまり実感がわかないのでちょっと確認してみます

 

データはこちらからもらいました。

統計局ホームページ/日本の統計

書けって書いてあるのでこれも表記しておきましょう

出典 総務省統計局「日本の統計 2014」

ぐぐれば表はいくらでも出てきますが

恐らくソースはここが多いのでは?

 

 

総人口の推移

f:id:marumorix:20140728093756j:plain

まずはグラフ。

ピークは2008年の12808万人

約30年後の2045年には10221万人なので思ったより減ってませんが

約50年後の2065年には8136万人。

 

運がよければ生きていますがその間に人口が約2/3になるっていうのは

ちょっと衝撃的。

 

年齢別人口

でもまー人口そのものなんてそんなに問題じゃなくて

怖いのはこれ。f:id:marumorix:20140728094332j:plain

データはもともと

普通15歳以下、65歳以上、その間の3つに分かれていたのですが

働く人とそれ以外って意味で15歳以下+65歳以上ってのを足してみました。

 

約30年後には働ける年齢の人と養われる人の数がだいたい同じくらい。

 

年齢だけで分けたデータなので

もし奥さんが専業だったら自分一人の収入で

4人の生活を支えないといけないっていうことです。

当然そのような社会情勢であれば年金なんか

ほとんど期待できないでしょう。

 

雑感

収入も全体的には下がっていきそうなので

将来どうなるかかなり心配。

 

とはいうものの

そこまで悲観的になることもなく

労働力の一部はロボットに置き換わるだろうし

女性も男性と変わらない意識で働くようになるだろうし

高齢者が働くのも一般的になるでしょう。

なにも対策しないとだめってことですね。

 

データ

つけておきます。

統計局ホームページ/日本の統計−本書の内容

ここからエクセルがダウンロードできるので

それをグラフにしただけです。

 

f:id:marumorix:20140728095842j:plain

f:id:marumorix:20140728095901j:plain

事業規模別の収入の違い

お金の話ばっかり書いてますが

これを海外のデータと比べて見たいのでまずは日本のデータを羅列。

 

海外やる前に飽きそうな不安。

 

例によって情報ソースはこちら

民間給与実態統計調査結果|長期時系列データ|国税庁

 

大企業は高収入なのか

結果は明らかなのでまずはグラフを2つ

企業規模が大きいほど収入が高い。

f:id:marumorix:20140724224907j:plain

f:id:marumorix:20140724224905j:plain

 

まとめ

5000人以上の大企業は30人以下の中小企業と比べて

平均で150万、男性は200万ほど収入が高い

女性はそれほど変わらない。

 

雑感

収入だけを目安にするなら大企業に就職したほうが有利そうです。

平均で見ると差がありますが

女性も男性と同じ職種で入社すれば傾向は同じでしょう。

 

能力そのものよりは業種や規模含めて

入った会社で収入が決まるような気がしています。

 

いくつか日本の収入データについて書きましたが

ちょっと検索すればこんなデータを可視化した記事はいくらでもあります。

自分でやってみないと実感としてなかなか頭に入らないので

今回はエクセルで自分の見たいものを図にしてみました。

 

会社もいつ何があるかわからないので

実情はどんなものか知っておきたかったのですが

特に事業規模と男女の差が予想以上でした。

 

アジアの中では恐らく1番か2番くらいに日本の収入は高いので

今後も仕事の海外シフトは引き続き進むでしょう。

雇用も収入も減る傾向は止められない中で

どうやったらそれなりに幸せに生きていけるのか。

 

勝ち逃げできるだけの能力も資産もないですが

できれば苦労せず楽しくやっていきたい。

どうしたらよいものか。

年齢別収入の推移

平均収入の30年の推移

収入分布の30年の推移

を確認したので

今度は年齢別に見てみます。

 

データは前回同様

民間給与実態統計調査結果|長期時系列データ|国税庁

ここから持ってきたデータをグラフにしただけです。

 

2012年時点での平均値は

全体平均408万円 男性502万円 女性268万円

 

じゃあ40歳になったらいくらもらえるの?

親父のころはどうだったの?

という疑問を確認してみます。

全体平均は30年でどう変わったか

f:id:marumorix:20140724214458j:plain

ちなみに全体の平均年収は

1982年 320万円

1992年 455万円

2002年 448万円

2012年 408万円

で1997年の467万円をピークに現在は下がっています。

 

1992年から比べると勤続年数が上がっても収入が増えなくなっています。

1992年は 22歳入社で280万円 → 55歳で550万円

2012年は 22歳入社で240万円 → 55歳で490万円

というのがモデルケース。

 

昔はよかったらしいという情報は正しいようです。

毎年50万くらい違うと40年で2000万くらい。

うらやましい。

 

男女での比較

f:id:marumorix:20140724215939j:plain

男女でも見てみます。

ピーク近くの20年間と比較

女性はほとんど変わっていないことがわかります。

つまり全体の差はほぼ男性の収入減によるもの。

 

雑感

2012年では

男性は30から50で200万上がっているので

年昇給20万といいたいところですが

われわれの20年後がどうなっているかはまた別の問題です。

 

女性は昇給しないのではなくやめて別の仕事に就く人が多いのでしょうか?

また25歳以下での給料の差は大卒が増えたからかもしれません。

現在は2曲化して男性同様稼ぐ人と家事メインでパートみたいな人がいるので

このグラフは男性の形に多少近づいていくのではないでしょうか?

 

まとめ

男性は年齢に従って昇給 30歳の370万からざっくり1年20万

女性は年齢にかかわらず270万くらい

 

 

 

 

収入分布の推移

前回平均収入の推移を見てみたので

今度は分布を見てみます。

 

今回も1世代前、父親世代との比較ということで

30年を目安とします。

 

データの出展は国税庁

民間給与実態統計調査結果|長期時系列データ|国税庁

 

収入の分布データを割合に直して見ました。

全体平均

f:id:marumorix:20140720173839j:plain

30年前は300万円以下が約26%で700万円以上の人はほとんどいませんでした。

20年前からはそれほど変化がありませんが最新の青いグラフは

10年前の赤い部ラフに比べて100~300万円の人が増える一方

500万円以上の範囲で1~2%程度下がっています。

400万円以下の人は2002年で52% 2012年で59%です。

 ちなみに600万円以上は

2002年で22%、2012年で17%となったようです。

ここ10年で給料が下がったのは気のせいじゃないみたいです。

 

男女別の分布

f:id:marumorix:20140720175227j:plain

男性は400万、女性は200万円くらいがピーク値です。

男性は600万円以上の人が全体的に1~2%下がっていて

400万円以下の人が増えています。

女性は250万くらいにピーク値があったのが200万くらいに移動しました。

稼ぐ女性が増えたという認識があったのですがそれは誤りで

10年前から減っていないだけで増えてもいないようです。

減っていないので相対的に増えているとも言えるかもしれません。

 

2012年時点で

400万円以下は 男性43% 女性 82%

600万円以上は 男性26% 女性 4.8%

 

雑感

親世代より額面は上がっている

10年前より給料は下がった

女性は収入が低い人が多い。

 

主となる収入を夫が、家事を妻がというモデルがあることを考えると

低収入=貧困というわけでもないと思いますが

女性が一人で生活を成り立たせるのはやはり厳しそうです。

平均年収の推移

研修で調べ物をしてるついでにいろいろ気になったので

気になったものを調べて見ることに。

 

情報ソース

割と国の機関で情報を公開してるのですが

一応ここが窓口になっている模様。

政府統計の総合窓口

 

平均年収はここ30年でどう変わったか

まずは国内の平均年収

複数の機関で同じようなことを調べているみたいですが

とりあえず使いやすそうなのはここ

統計情報|活動報告・発表・統計|国税庁

確かに税金取るためには把握してるはずですよね。

 

f:id:marumorix:20140720125210j:plain

過去30年分

ピーク値との比較

収入は下がったと言われていますが思ったより変化なし。

1997年のピーク値467万円から2012年で408万円になっているので

13%程度の下落があります。

額面で見るとバブルの平均600万くらいのイメージだったので

思ったより下がっていませんでした。

ただ多くの家庭で10%下がったということは生活を変えていなければ

貯蓄はできなくなっているのではないでしょうか?

 

親世代との比較

上昇していく経済で働くことが楽しかったであろう親世代との比較。

1世代30年として30年前の1982年は320万円だったものが

2012年で408万円になっているので平均収入としては27%の上昇。

物価も上がっているのでそのまま豊かさではないものの

親世代よりは経済的に余裕がありそう。

ただあがっていくか下がっていくかでのモチベーションはかなり違いますよね。

ちなみにこの平均は1年以上勤務している人のデータなので

就職難などの条件は含まれていません。

悪くなければ就職できた時代から良くないと苦しい時代になったので

そのあたりは厳しいところ。

 

男女間の差

2012年の平均408万に対して

男性平均502万、女性平均268万

ただこれはパートのおばちゃんとか一般職の人が入っているので

そのあたりの差が出ているような気がします。

それでも思った以上の差。

男性は給料の低い仕事で家計の補助約に回ることが少ないので

収入の少ない人があまりいないのかもしれません。

意識の差もあるとは思いますがデータを見て海外から批判を受けるのは

仕方ないのかもしれないですね。

あと女性の平均は景気に左右されない感じ。 

男性は2009年の567万がピークだったので

都市部であれば600万程度だったのでしょう。

一番良い頃は年収600はリアルに平均だったんですね。

 まとめ

2012年時点での平均値は

全体平均408万円 男性502万円 女性268万円

男性のピークは2009年の567万

雑感

飽きたのと仕事が忙しくなったので

しばらく放置でしたが

研修でいろいろ調べてていたところ

割といろいろなデータが公開されていることを知りました。

 

面白いのでちょっとこのあたりを調べながら

書いておこうと思います。

 

最近はパズドラもツムツムも飽きてしまったので

モーターストームRCを思い出したようにやっています

1500円の割りにわりとよくできてる。

なかなか難しい。

 

あと友達にIngressというアプリを教わったのではじめて見ました。

GPSを使った陣取りゲームっぽい感じですが

さっぱりわかりません。

 

眠ったままのPS4を使いたいのですが

やりたいソフトがないのでもうしばらく眠らせておきます。

Plusの課金がもったいない・・・