NAudio 处理音频
最近在做一个文章生成语音的功能碰到一些问题;
文字生成语音用的是科大讯飞的长文接口,生成出来之后是mp3文件;在实际使用过程中发现声音很小,于是超找方案最终找到NAudio来处理
首先在NuGet搜索NAudio 并安装指定版本,如果想用.net Framework 4.7.4以下的 可以用V1.10.0

修改音量
/// <summary> /// 修改音量 /// </summary> /// <param name="inPutfile">需要修改的MP3源文件路径</param> /// <param name="outputFile">修改后的MP3文件路径</param> /// <param name="volume">音量 float类型 默认1 建议不要超过3否则破音很严重</param> public void UpVolume(string inPutfile,string outputFile,float volume=1) { try { using (AudioFileReader first = new AudioFileReader(inPutfile)) { first.Volume = volume; MediaFoundationEncoder.EncodeToMp3(first.ToWaveProvider16(), outputFile); }; } catch (InvalidOperationException ex) { Console.WriteLine(ex.Message); } }
合并Mp3文件
/// <summary> /// Mp3格式合并 /// </summary> /// <param name="inputFiles">待合并文件路径</param> /// <param name="outputfullName">输出文件名</param> public void CombineMp3(List<string> inputFiles, string outputfullName) { using (FileStream outputStream = new FileStream(outputfullName, FileMode.OpenOrCreate)) { foreach (string file in inputFiles) { Mp3FileReader reader = new Mp3FileReader(file); if ((outputStream.Position == 0) && (reader.Id3v2Tag != null)) { outputStream.Write(reader.Id3v2Tag.RawData, 0, reader.Id3v2Tag.RawData.Length); } Mp3Frame frame; while ((frame = reader.ReadNextFrame()) != null) { outputStream.Write(frame.RawData, 0, frame.RawData.Length); } } } }
参考内容:
https://github.com/naudio/NAudio/blob/master/Docs/MediaFoundationEncoder.md
https://github.com/naudio/NAudio/blob/master/Docs/ConvertMp3ToWav.md

浙公网安备 33010602011771号