WAVファイル, MP3ファイルを無音部分で分割
仕事で音声ファイルを無音部分で分割する必要がでてきたけど、 Audacityでやっても分割前の空音が残ってしまったり、保存時のファイル名指定が面倒だったり、 なかなか思い通りにならなかったのでPythonで処理しました。
必要なものなどのメモ書き。
環境
ライブラリのインストール
AnacondaでFFMPEGはmenpoさんが公開しているので、これを使った。
conda install -c menpo ffmpeg
また、pydubはpipでインストール.
pip install pydub
ファイルの読み込み~無音部分での分割
pydubにsplit_on_silenceというクラスがあるので、これを使うだけ。
from pydub import AudioSegment from pydub.silence import split_on_silence sound = AudioSegment.from_file("./untitled1.wav", format="wav") chunks = split_on_silence( sound, # 1500ms以上の無音がある箇所で分割 min_silence_len=1500, # -30dBFS以下で無音とみなす silence_thresh=-30, # 分割後500msだけ、無音を残す keep_silence=500 ) # 分割数の表示 print len(chunks)
表示された分割数で所望数通り、分割されているか確認してね。 silence_threshやmin_silence_lenのパラメータで多少の調整は必要。
ファイル名リストの作成~保存
作成したいファイル名が連番でなかったので、リストで作成(ここは好きにすればよい)。 その名前に従って分割した音声ファイルを保存。前節の分割数とfilelistの要素数が同じになるように注意。
filelist = ["file_hoge1","hogegennhogehoge","foo_bar","lucky_you",] for i, chunk in enumerate(chunks): chunk.export(u"./分割/"+filelist[i]+".wav", format="wav")
Easy peasy Japanesey!
シリコンバレー発 アルゴリズム革命の衝撃 - 櫛田健児
シリコンバレー発 アルゴリズム革命の衝撃 Fintech,IoT,Cloud Computing,AI、 アメリカで起きていること、これから日本で起こること
- 作者: 櫛田健児
- 出版社/メーカー: 朝日新聞出版
- 発売日: 2016/09/20
- メディア: 単行本
- この商品を含むブログ (1件) を見る
著者の櫛田健児さんは、スタンフォード大学の政治学博士とのことで、本書ではアルゴリズムでもビジネスでもなく、政治や社会の切り口から第3次AIブームについて議論されている。
櫛田さん自身、日本とシリコンバレーをつなぐ仕事をされているようで、いくつか日本語の資料をネットで見つけることができる。いずれもシリコンバレーと日本のビジネス社会および会社文化の比較が主な内容となっており、シリコンバレーの新陳代謝の盛んな環境で生まれる技術を旧態依然とした日本大企業へ取り込む接点をどう作っていくかに関心がある様子。
- 『後続者のいない先行者』日本の情報通信 ガラパゴス化の謎: 国際政治経済分析」
- 「シリコンバレー経済エコシステム『活用』への新しいパラダイム:スタンフォード大学からの視座」
- 「シリコンバレーの本質と日本の底力と課題に迫る:アルゴリズム革命から見るFintech, IoT, Cloud Computing, Biotech」
(セミナータイトルから言って、おそらく3つめのセミナーが本書の下敷きになっていると思われる)
そういった背景を確認して本書を見ると
- 1章目:
- シリコンバレーで生まれる革新的ビジネスモデルの例(Uber, airbnbなど)と、それを可能にした技術・設備投資の特徴
- 2章目:
- パソコン、ビッグデータ、クラウド、AIというここ20年で並んできたブームキーワードはコンピュータ処理能力のコモディティ化であり、AIの出現によってアルゴリズムを作るというところまでコモディティ化してきているという時代の流れ
- 3章目:
- 今後進んでいくアルゴリズム生成のコモディティ化(≒自動化)に必要なものは、データであることから、データを取得できるようにする「できる化」(IoT)をどれだけ取り組んだかでビジネスの勝ち負けにつながることを説き、さらに、それをどれだけ早く製品に適用できるかが勝負になってくるということを提言
(市場に出回っているものを後からアップデートすることも含み、それを可能にするリッチなハードウェア搭載も戦略の一つ) - 4章目:
- 2章目のコンピュータ処理能力のコモディティ化による副産物としてFintechも同様に世界が変わる動きとしてあることを紹介
- 5章目:
- 3~4章のような変化による果実を日本企業が手にしていくために、日本の、会社の組織あるいは政治、社会が変化する必要がある部分の提案
という流れになっています。
私自身、年齢的にも会社組織を変えられるほどのポジションにはいないので読後の無力感は否めませんが、欧州留学時に技術者の卵がこういった話を(技術者なのに)するような授業も受けています。20年前以上前の本ですが、Japanese Negotiatorにあるような浪花節が上位に来る会社文化から、そろそろ脱皮するような時期に来ているのかもしれません。
The Japanese Negotiator: Subtlety and Strategy Beyond Western Logic
- 作者: Robert M. March
- 出版社/メーカー: Kodansha America, Inc
- 発売日: 1990/07
- メディア: マスマーケット
- この商品を含むブログを見る
(アメリカも40年前は浪花節的な会社文化だったそうで、日本にコテンパンにされた1980年代から90年代に今の形に変わっていったそうです)
FFTと窓関数の効果
先日FFTのエネルギーについて記事を書いたところ、 その内容を山岡さんに取り上げていただき面白い検証につながり大変楽しく読ませていただいています。
この中で周波数とパワースペクトルと、そしてビンの関係を考察してしていらっしゃいます。
具体的には「ピークの周波数の周辺のパワースペクトルの和がエネルギー(全周波数のパワースペクトルの総和)に占める割合」を求めていますが、拝見したところスペクトル漏れが起きているように見受けられます。
山岡さんの検討にハミング窓を加えるとスペクトル漏れが低減できるというのを示します。
%matplotlib inline import numpy as np import matplotlib.pyplot as plt fs = 44100 size = 4096 t = np.arange(0., size) / fs frq = np.fft.fftfreq(size, 1./fs) fset = np.linspace(400, 500, 1001) range = [1, 3, 5] hammingWindow = np.hamming(size) range = [1, 3, 5] for r in range: peaks = [] for f in fset: y = np.sin(2 * np.pi * f * t)*hammingWindow Y = np.fft.fft(y) P = abs(Y[0:size/2])**2 P_around = np.convolve(P, np.ones(r), 'valid') peaks.append(max(P_around) / sum(P)) plt.plot(fset, peaks) plt.axis([400, 500, 0, 1.1]) plt.show()
Before 窓関数なし(オリジナルの結果)
After ハミング窓あり
青 ピーク値 緑 ピークとサイドビン2個の和 赤 ピークとサイドビン4個の和
ここで周辺和を取らない結果が悪くなるのは、もう離散化の具合の話でそこはスペクトルの裾の広さに現れてしまうのは、昨日のエントリーの通りです。
参考
窓関数の理屈については、こちらが参考になると思います。
また、離散信号の扱いはスター変換など色々あるんですが、 私の出自が制御屋周辺なので、乱暴にいうとこの辺あたりから、 放浪の旅が始められるんではないかと感じました。
差し出がましながら、ここまで。