如何根据不同的扬声器分开音频文件
how to separate an audio file based on different speakers
我有很多有关电话对话的音频文件。我想尝试将一个音频文件分为两个,每个文件只包含一个扬声器的演讲。也许我需要使用语音诊断。但是我该怎么做?有人可以给我一些线索吗?谢谢。PS:Linux OS.C/C
分开单个扬声器是一个很难的问题,您可以自动将音频拆分在有停顿的地方。这将产生一系列可能更容易管理的文件,因为扬声器通常在停顿之间交替。
这种方法需要开源的Julius语音识别解码器软件包。这在许多Linux软件包存储库中可用。我使用Ubuntu Multiverse存储库。
这是网站:http://julius.sourceforge.jp/en_index.php
步骤0:安装Julius
sudo apt-get install julius
步骤1:段音频
adintool -in file -out file -filename myRecording.wav -startid 0 -freq 44100 -lv 2048 -zc 30 -headmargin 600 -tailmargin 600
-startid 是将附加到文件名
的开始段编号-freq 是源音频文件的采样率
-lv 是音频的级别,语音检测将是活动的
-zc 是零交叉点,在该交叉处,语音检测将是活动
-headmargin 和 -tailmargin 是每个音频段之前和之后的沉默量
请注意,-LV和-ZC必须针对您的特定录音属性进行调整,而-headmargin和-tailmargin必须针对您的特定扬声器样式进行调整。但是上面给出的值在过去的语音录音方面效果很好。
这是文档:http://julius.sourceforge.jp/juliusbook/en/adintool.html
根据我的经验,使用压缩和归一化对音频进行预处理,可以提供更好的结果,并且需要更少的朱利叶斯参数调整。建议这些初始步骤,但不需要。
此方法需要开源Sox音频工具包。这也可以在许多Linux软件包存储库中获得。我使用Ubuntu Universe存储库。
这是网站:http://sox.sourceforge.net
步骤-2:安装SOX
sudo apt-get install sox
步骤-1:预处理音频
sox myOriginalRecording.wav myRecording.wav gain -b -n -8 compand 0.2,0.6 4:-48,-32,-24 0 -64 0.2 gain -b -n -2
增益-b -n 平衡,并将音频归一化为给定的水平
组合压缩(在这种情况下)基于参数的音频
请注意,组合可能需要一些时间才能完全理解参数。但是上面给出的值在过去的语音录音方面效果很好。
这是文档:http://sox.sourceforge.net/sox.html
尽管这不会让您识别每个说话者,但它将大大简化通过耳朵执行操作的任务,这可能是一段时间以来唯一的选择。但是我确实希望您找到实用的解决方案,如果它已经可用。
是的,诊断是您想要的。
您可以看几个工具,都是GPL。一个是lium spkdiarization(java),另一个是喊叫工具包(C )。lium有充分的文献记载,旁边有一个脚本,喊叫声更加隐秘,因此您应该按照作者在此处发布的说明。
尽管我可能为时已晚。;)
- FFMpeg库:如何在音频文件中精确查找
- C++新手,想知道如何使用VS code 2019播放音频文件
- QTCPSocket(Qt-C++)中的音频文件逐字节传输
- 音频插件.将 MIDI 映射到音频文件
- 如何在图像位中设置标志以标记音频文件的结尾
- 实时更改音频文件的速度
- 正在读取 RAW 音频文件
- 是否可以使用带有random_shuffle的矢量随机播放音频文件
- 如何使用QT或Linux上的任何其他CPP框架播放WMA音频文件
- SFML不加载音频文件
- 无法使用 PlaySound 在 C++ 中播放音频文件
- 如何合并(混合)两个立体声MP3音频文件
- 需要一个音频分析库来从音频文件中创建实时反馈
- openAL c++ 库来比较两个音频文件
- 如何根据不同的扬声器分开音频文件
- 用于读取音频文件的库
- 在C++和QT中播放WAV音频文件
- 使用 C++ 在 Linux 中播放.mp3或其他音频文件
- 在Windows 7上使用Windows Media Foundation将原始音频文件转换为AAC
- 读取C++音频文件