Panasonic製固定電話の録音データwavファイルをAACコーディックにてm4aファイルに変換する。 1件分の録音データは以下の用はディレクトリ構成になっている。 ディレクトリ構成の例 ├─PAM001 │ PAM001.TXT │ PAM00101.WAV │ PAM00102.WAV PAM001が1件分の録音データのディレクトリである。 テキストファイルの1行目に録音日時がShift-JISで記録されている。 録音データは末尾が連番のWAVファイルとして記録される。 録音時間が短い場合はWAVファイルは末尾が01.WAVの1個のみ。 録音時間が長い場合は02.WAV、03.WAVと連番で作成される。 以下は変換用のPowerShellのスクリプトである。 dataディレクトリに録音データのディレクトリを任意の件数保存した想定である。 dataディレクトリを再帰的にwavファイルを探し、m4aファイルにデフォルト設定で変換する。 変換にはffmpegを用いている。 タイトルのみテキストファイルの1行目をUTF8に変換して、末尾添字をついきして設定する。 ------------------------------ Get-ChildItem -Path data -Filter *.wav -Recurse -File | ForEach-Object { $wavPath = $_.FullName Write-Host "`$wavPath = $wavPath" $baseName = $_.BaseName Write-Host "`$baseName = $baseName" $baseNameHead = $baseName.Substring(0,6) Write-Host "`$baseNameHead = $baseNameHead" $baseNameTail = $baseName.Substring(6) Write-Host "`$baseNameTail = $baseNameTail" $dir = $_.DirectoryName Write-Host "`$dir = $dir" $txtPath = Join-Path -Path $dir -ChildPath ($baseNameHead + ".txt") Write-Host "`$txtPath = $txtPath" if (-not (Test-Path -Path $txtPath)) { Write-Output ("[SKIP] TXT not found for: {0}" -f $wavPath) return } $reader = New-Object System.IO.StreamReader($txtPath, [System.Text.Encoding]::GetEncoding("shift_jis")) $firstLine = $reader.ReadLine() $reader.Close() $titleUtf8 = [System.Text.Encoding]::UTF8.GetString( [System.Text.Encoding]::UTF8.GetBytes($firstLine) ) $titleUtf8 = $titleUtf8 + "_" + $baseNameTail Write-Host "`$titleUtf8 = $titleUtf8" $outPath = Join-Path -Path $dir -ChildPath ($baseName + ".m4a") Write-Host "`$outPath = $outPath" ffmpeg -i $wavPath -metadata title="$titleUtf8" $outPath Move-Item -Path $outPath -Destination .\m4a } ------------------------------