Haskell &引用;PCM仅适用于现在”的;错误,在WAVE-0.1.3中的./Data/WAVE.hs:127:11处调用

Haskell &引用;PCM仅适用于现在”的;错误,在WAVE-0.1.3中的./Data/WAVE.hs:127:11处调用,haskell,audio,wav,Haskell,Audio,Wav,我正在尝试播放一个.wav文件,并且正在尝试Hackage's这样做 我生成了一个录音myrecording.wav,并在同一个目录中放置了这个简单的程序: module PlayWave where import Data.WAVE path :: String path = "myrecording.wav" main = do getWAVEFile path 我尝试使用$runhaskell PlayWav.hs运行它,并得到以下错误: $ runhaskell PlayWa

我正在尝试播放一个.wav文件,并且正在尝试Hackage's这样做

我生成了一个录音
myrecording.wav
,并在同一个目录中放置了这个简单的程序:

module PlayWave where

import Data.WAVE

path :: String
path = "myrecording.wav"

main = do
  getWAVEFile path
我尝试使用
$runhaskell PlayWav.hs
运行它,并得到以下错误:

$ runhaskell PlayWav.hs 
PlayWav.hs: PCM only for now
CallStack (from HasCallStack):
  error, called at ./Data/WAVE.hs:127:11 in WAVE-0.1.3-EDUsomPiULdBJaA1HF9vpg:Data.WAVE
报告的错误对应于WAVE源代码中文件的第127行。 我看到了错误案例,但不理解为什么我的代码会导致失败


macOS Sierra 10.12.4上的Am

看起来库不完整,您试图播放未实现的格式。试着寻找替代品,对。AFAIK是目前最有用的音频文件加载器。在功能更强大的ffmpeg的绑定上,有很多问题。像
WAVE
这样的本机Haskell解决方案肯定很吸引人,但由于周围有大量不同的音频格式,它在某种程度上是不可行的。
file
命令将为您提供一些关于WAV文件类型的提示。在某些系统上还有一个
mediainfo
命令。此外,WAVE库不会按预期“播放”一个.wav文件。它只用于解析和写入.wav文件,而不是播放它们,为此您需要另一个库:它是可以播放声音文件的几个库之一。