[杂记]C# 中音频突破原始音量播放
using System;
using System.IO;
using System.Speech.Synthesis;
using NAudio.Wave;
using NAudio.Wave.SampleProviders;
namespace ConsoleApp
{
internal class Program
{
static void Main(string[] args)
{
// WAV文件音频放大
//wavLouder();
// MP3文件音频放大
//mp3Louder();
// TTS流音频放大
ttsStreamLouder();
}
private static void wavLouder(){
string wavFile = @".\Tmp\Example.wav";
// 读取wav文件
WaveFileReader wav = new WaveFileReader(wavFile);
// 创建SampleChannel实例以处理音频流
SampleChannel wavChannel = new SampleChannel(wav);
// 设置声音放大系数
wavChannel.Volume = 10.0f;
// 创建WaveOutEvent实例以播放音频
WaveOutEvent player = new WaveOutEvent();
player.Init(wavChannel);
player.Play();
Console.WriteLine("Press Any Key ...");
Console.ReadKey();
}
private static void mp3Louder(){
string mp3File = @".\Tmp\Example.mp3";
// 读取mp3文件
Mp3FileReader mp3 = new Mp3FileReader(mp3File);
// 创建SampleChannel实例以处理音频流
SampleChannel mp3Channel = new SampleChannel(mp3);
// 设置声音放大系数
mp3Channel.Volume = 10.0f;
// 创建WaveOutEvent实例以播放音频
WaveOutEvent player = new WaveOutEvent();
player.Init(mp3Channel);
player.Play();
Console.WriteLine("Press Any Key ...");
Console.ReadKey();
}
private static void ttsStreamLouder(){
using (var synthesizer = new SpeechSynthesizer())
{
// 设置语音合成的属性,例如选择语音等
synthesizer.SelectVoiceByHints(VoiceGender.Female, VoiceAge.Adult);
// 创建一个MemoryStream来存储生成的音频流
var memoryStream = new MemoryStream();
// 将音频流设置为SpeechSynthesizer的输出
synthesizer.SetOutputToWaveStream(memoryStream);
// 进行语音合成
synthesizer.Speak("Hello, World!");
synthesizer.Volume = 100;
// 将MemoryStream的位置重置为开头
memoryStream.Position = 0;
// 创建一个WaveFileReader来读取MemoryStream中的音频流
var waveStream = new WaveFileReader(memoryStream);
// 创建SampleChannel实例以处理音频流
SampleChannel streamChannel = new SampleChannel(waveStream);
// 设置音量放大系数
streamChannel.Volume = 10.0f;
// 创建一个WaveOutEvent实例来播放音频
var waveOut = new WaveOutEvent();
waveOut.Init(streamChannel);
waveOut.Play();
Console.WriteLine("Press Any Key ...");
Console.ReadKey();
}
}
}
}
本作品采用《CC 协议》,转载必须注明作者和本文链接