Audacity导出音频后发声提醒

这么一个看似简单的功能,实现起来却颇费周折。

据ai说,Audacity 3.3版本只需要简单设置一下就可以了。但后来的版本莫名其妙去掉了这个功能。

ai给了大量的错误信息。首先用Nyquist写插件,没用,它只能生成一个音频,不能播放音频,也就是不能发声。

试了宏,Export2的参数只允许设置文件名,而且不能置空,没用。

最后在ai帮助下,使用mod-script-pipe模块,结合powershell代码,终于成功。具体方法:

1. 激活mod-script-pipe模块(缺省不激活):菜单Edit - Preferences - Modules,找到mod-script-pipe,设置为Enabled。重启Audacity。

2. 编写powershell代码

param (
    [string]$filePath
)
$pipeIn  = "\\.\pipe\ToSrvPipe"
$pipeOut = "\\.\pipe\FromSrvPipe"

function Send-AudacityCommand {
    param([string]$command)

    # Send command
    $pipe = New-Object System.IO.Pipes.NamedPipeClientStream(".", "ToSrvPipe", [System.IO.Pipes.PipeDirection]::Out)
    $pipe.Connect()
    $writer = New-Object System.IO.StreamWriter($pipe)
    $writer.AutoFlush = $true
    $writer.WriteLine($command)
    $pipe.Close()

    # Read response
    $pipeR = New-Object System.IO.Pipes.NamedPipeClientStream(".", "FromSrvPipe", [System.IO.Pipes.PipeDirection]::In)
    $pipeR.Connect()
    $reader = New-Object System.IO.StreamReader($pipeR)
    $response = $reader.ReadToEnd()
    $pipeR.Close()
    return $response
}

$folder = Split-Path $filePath -Parent

$baseName = [System.IO.Path]::GetFileNameWithoutExtension($filePath)

$exportPath = Join-Path $folder "$baseName.m4a"

Send-AudacityCommand "Export2: Filename=""$exportPath"" Format=m4a"

[console]::beep(800,2000)

3. 添加注册表项以生成右键菜单

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\Export Audio as M4a]

[HKEY_CLASSES_ROOT\*\shell\Export Audio as M4a\Command]
@="powershell.exe -NoProfile -ExecutionPolicy Bypass -File \"C:\\foo\\bar.ps1\" -filePath \"%1\""

这样,先用Audacity导入视频,然后在文件管理器中右键点击文件名,选Export Audio as M4a,就可以了。

本来也可以通过powershell,调用audacity的Import命令,直接导入。但是很多视频导入后,需要手工调整音频设置,所以这一步就不自动化了。

posted @ 2025-10-06 23:24  平静寄居者  阅读(9)  评论(0)    收藏  举报