https://github.com/bwmarrin/dca/tree/master/cmd/dca

dcaというコマンドはwavなどの音声形式をdca形式に変換するためのコマンドなのですが、これをGoのプログラムから動かしたく以下のようなプログラムを作成したのですが、普通にコマンドを入力して作成したファイルよりも容量が小さく正しいファイルが生成できません。どう修正すれば正しいファイルを生成できるのでしょうか。

コマンド

dca -i hello.wav --raw > hello.dca

プログラム

package main

import (
    "io"
    "io/ioutil"
    "os"
    "os/exec"
)

func main() {
    b, err := ioutil.ReadFile("hello.wav")
    if err != nil {
        panic(err)
    }

    cmd := exec.Command("dca", "--raw", "-i", "pipe:0")
    stdin, _ := cmd.StdinPipe()
    io.WriteString(stdin, string(b))
    stdin.Close()
    out, err := cmd.Output()
    if err != nil {
        panic(err)
    }

    f, err := os.Create("hello.dca")
    if err != nil {
        panic(err)
    }

    defer func() {
        if err := f.Close(); err != nil {
            panic(err)
        }
    }()

    if _, err := f.Write(out); err != nil {
        panic(err)
    }
}