先日のアドベントカレンダーへのエントリ中で、「今回のエントリはJulia 1.0.5用に書いています。というのも、Julia 1.2や1.3あたりからLibSndFileなどのインストールがうまくいかない状況になっているからです」と書きましたが、それが解決できたので記録を残しておきます。
(TLDR; SampledSignalsの前にUnitfulをインストールしないこと)
まず、どういう状況になっていたかというと、SampledSignalsをインストールしようとしても以下のようなエラーが出てしまい、インストールさせてくれないというものでした。
(v1.3) pkg> add SampledSignals
Resolving package versions...
ERROR: Unsatisfiable requirements detected for package Unitful [1986cc42]:
Unitful [1986cc42] log:
├─possible versions are: [0.9.0, 0.10.0, 0.11.0, 0.12.0, 0.13.0, 0.14.0, 0.15.0, 0.16.0, 0.17.0, 0.18.0] or uninstalled
├─restricted to versions 0.18.0 by an explicit requirement, leaving only versions 0.18.0
└─restricted by compatibility requirements with SampledSignals [bd7594eb] to versions: 0.17.0 — no versions left
└─SampledSignals [bd7594eb] log:
├─possible versions are: [2.0.0, 2.1.0] or uninstalled
├─restricted to versions * by an explicit requirement, leaving only versions [2.0.0, 2.1.0]
└─restricted by compatibility requirements with FFTW [7a1cc6ca] to versions: 2.1.0 or uninstalled, leaving only versions: 2.1.0
└─FFTW [7a1cc6ca] log:
├─possible versions are: [0.1.0-0.1.2, 0.2.0-0.2.4, 0.3.0, 1.0.0-1.0.1, 1.1.0, 1.2.0] or uninstalled
└─restricted to versions 1.2.0 by an explicit requirement, leaving only versions 1.2.0
どうやらUnitfulとFFTWのバージョンがSampledSignalsと整合しないようです。Unitful 0.17.0とFFTW 1.2.0が欲しいのかな。
statusを見てみると、
(v1.3) pkg> st
Status `~/.julia/environments/v1.3/Project.toml`
[537997a7] AbstractPlotting v0.9.16
[c52e3926] Atom v0.11.3
(中略)
[7a1cc6ca] FFTW v1.2.0
(中略)
[1986cc42] Unitful v0.18.0
[d6d074c3] VideoIO v0.6.10
となっており、たしかにUnitfulのバージョンが0.18.0ということでマッチしていません。FFTWは良さそうな感じです。
でも、念のため、どちらもアンインストールします。
(v1.3) pkg> rm Unitful Updating `~/.julia/environments/v1.3/Project.toml` [1986cc42] - Unitful v0.18.0 Updating `~/.julia/environments/v1.3/Manifest.toml` [187b0558] - ConstructionBase v1.0.0 [1986cc42] - Unitful v0.18.0 (v1.3) pkg> rm FFTW Updating `~/.julia/environments/v1.3/Project.toml` [7a1cc6ca] - FFTW v1.2.0 Updating `~/.julia/environments/v1.3/Manifest.toml` [no changes]
で、ここでSampledSignalsをインストール。
(v1.3) pkg> add SampledSignals Resolving package versions... Installed Colors ───── v0.11.1 Installed ColorTypes ─ v0.9.0 Updating `~/.julia/environments/v1.3/Project.toml` [bd7594eb] + SampledSignals v2.1.0 Updating `~/.julia/environments/v1.3/Manifest.toml` [3da002f7] ↑ ColorTypes v0.8.1 ⇒ v0.9.0 [5ae59095] ↑ Colors v0.10.1 ⇒ v0.11.1 [bd7594eb] + SampledSignals v2.1.0 [1986cc42] + Unitful v0.17.0
うまくいった。こんな単純なことだったのか……。 FFTWについての出力がないので、関係ないのかな? 常用するものなので再インストールしておかないと。
(v1.3) pkg> add FFTW Resolving package versions... Updating `~/.julia/environments/v1.3/Project.toml` [7a1cc6ca] + FFTW v1.2.0 Updating `~/.julia/environments/v1.3/Manifest.toml` [no changes]
これでLibSndFileもインストールできるし、DSPを使うプログラムもJulia 1.3で動かせるようになった。良かった。
_
_ _ _(_)_ | Documentation: https://docs.julialang.org
(_) | (_) (_) |
_ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help.
| | | | | | |/ _` | |
| | |_| | | | (_| | | Version 1.3.1 (2019-12-30)
_/ |\__'_|_|_|\__'_| | Official https://julialang.org/ release
|__/ |
julia> using FileIO: load
julia> import LibSndFile
julia> snd = load("speech_male.flac")
4659900-frame, 1-channel SampleBuf{FixedPointNumbers.Fixed{Int16,15}, 2}
105.66666666666667s sampled at 44100.0Hz
▇▇▆▆▇▇▆▆▆▆▅▇▆▆▆▆▆▆▆▆▆▆▆▆▆▅▃▇▆▆▆▇▆▆▆▆▆▆▆▆▆▇▆▆▆▆▆▆▆▆▆▆▆▅▆▇▆▆▆▇▇▆▇▆▆▇▆▆▇▆▆▆▆▆▆▆▁▁▁▁
気兼ねなく、年が越せる!