[杂记]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 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!