ブログ (71)


cake-phpに必要な環境をubuntuに作る(php7)

思ったよりめんどくさかったのでメモ

多分php7においてcake phpに必要なものは以下だと思われる

  • php本体(今回は7)
  • composer
  • intl.so(phpのextension)
  • mbstring.so(phpのextension)

PHP本体は7をaptなりでインストールしてもらったらいいが、taskselのlamp-serverをインストールすると便利

 

composerは公式サイトのインストールスクリプトを使ってインストールしたらいいし、ubuntuなら以下のコマンドでもいける

2つのphpextensionはC言語で実装された拡張なのでcomposerではなく、peclからインストールするべき…と思っていたのだがpeclにあるintlはphp7だとコンパイルエラーになるし、mbstringはそもそもpeclにない。

ということでこれら2つもaptからインストールする

aptからインストールするとphp.iniにextension=を記述しなくても問題なく使えた

自分の環境では上記2つのextensionをインストールするとcakephpが使えたがまだ必要なモジュールがあるかもしれない




UWPのNotificationsExtensionsがUWPCommunityToolkitに移植されてた

UWPを開発するときにほぼ必須といっても過言ではない通知を定義するxmlをクラス構造でラップしてくれてインテリセンスから簡単に通知を表示できるNotificationsExtensionのライブラリが気づいたらUWP Community Toolkitに移植されていました。

UWP Community TookitとはオープンソースではないWindowsのAPIに対し、コミュニティでも簡単に開発に参加できる公式ライブラリとして存在しているUWPのExtensionライブラリみたいなものですがこちらの記事にあるようにNotificationExtensionsは完全にCommunity Toolkitに移植されてたみたいですね

NotificationsExtensions has moved to the UWP Community Toolkit!

なので以降はNugetからMicrosoft.Toolkit.Uwp.Notificationをインストールしろということのようです。




pandasでよく使うけど忘れやすい処理のメモ

特定の列削除

行のイテレーション

列条件に一致する行の抽出

平均をとって平均からの差分を取得

特定の列の条件によって変化する新しい列の生成

 

 

 

 




dotnetcoreからCognitiveServiceを利用する

既存の.net framework向けCognitive ServicesのSDK(Nugetに上がってるProjectOxford的な奴)ってdotnetcoreで使えないみたいですね。

実行しようとするとこのようなエラーがでます。

System.IO.FileNotFoundException: Could not load file or assembly ‘System.Net, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes’. The system cannot find the file specified.

System.Net(2.0.5.0)のアセンブリが無いと言われてるようですがdotnetcoreには該当アセンブリがないのだろうか(おってなかったのでわからない)*1

ProjectOxfordのSDKはオープンソースではないはずなのでソースをいじれないことには対応ができないわけで、直接RESTでAPIを叩こうかとも思ったんですけどすでに公式でCognitiveServiceのDotnetCore向けのSDKがオープンソースで公開されていました。

https://github.com/search?utf8=%E2%9C%93&q=org%3AMicrosoft+cognitive+core&type=

親切なことにNugetにも公開済み。後ろにDotNetCoreが付いているものが該当SDKとなります

ということで.csprojを編集してNugetライブラリの指定を変えます。

あとはdotnet restoreでok

 

*1 社員の方曰く互換性はほとんどないようです。おとなしくコンパイルしなおしましょうということですね

 




Audacityを使って複数のwavファイルを一括に発話区間検出(VAD)する

AudacityのSoundFinderを複数のファイルに一括適用します。

VADをしたいファイルを複数用意します。

以下のPython3用のスクリプトを実行します。

wavファイルをおいていたディレクトリにwav_list.lofというファイルができているのでAudacityで読み込みます。

Audacityで複数トラックの音声ファイルを時間をずらして読み込めます。

SoundFinderを実行します。この操作でVADを行うことになるので適宜パラメータを調整してください。

VADを行ったラベルデータを書き出します。

以下のPython3用スクリプトを実行します。ラベルのパスとlofファイルのパスは指定してください。

 

複数の音声ファイルに一括で発話区間検出のラベルを作ることができました。

音声ファイル名.txtがAudacityで使えるラベルデータとなります。

あとはこれを読み込んでsoxで切り取るなりすれば発話ごとの音声ファイルになります。

ちなみにファイルパスに2バイト文字(日本語など)が入っているとAudacityの謎仕様により読み込めません