• C# 中发声


    (一)播放音乐
    using System;
    using System.Runtime.InteropServices;

    namespace Sound
    {
     /// <summary>
     /// Summary description for PlaySound.
     /// </summary>
     public class PlaySound
     {
      internal class Helpers1
      {
       [Flags]
        public enum PlaySoundFlags : int
       {
        SND_SYNC = 0x0000,  /* play synchronously (default) */ //同步
        SND_ASYNC = 0x0001,  /* play asynchronously */ //异步
        SND_NODEFAULT = 0x0002,  /* silence (!default) if sound not found */
        SND_MEMORY = 0x0004,  /* pszSound points to a memory file */
        SND_LOOP = 0x0008,  /* loop the sound until next sndPlaySound */
        SND_NOSTOP = 0x0010,  /* don't stop any currently playing sound */
        SND_NOWAIT = 0x00002000, /* don't wait if the driver is busy */
        SND_ALIAS = 0x00010000, /* name is a registry alias */
        SND_ALIAS_ID = 0x00110000, /* alias is a predefined ID */
        SND_FILENAME = 0x00020000, /* name is file name */
        SND_RESOURCE = 0x00040004  /* name is resource name or atom */
       }

       [DllImport("winmm")]
       public static extern bool PlaySound( string szSound, IntPtr hMod, PlaySoundFlags flags );
      }
      internal class Helpers2
      {
       [Flags]
        public enum PlaySoundFlags : int
       {
        SND_SYNC = 0x0000,  /* play synchronously (default) */ //同步
        SND_ASYNC = 0x0001,  /* play asynchronously */ //异步
        SND_NODEFAULT = 0x0002,  /* silence (!default) if sound not found */
        SND_MEMORY = 0x0004,  /* pszSound points to a memory file */
        SND_LOOP = 0x0008,  /* loop the sound until next sndPlaySound */
        SND_NOSTOP = 0x0010,  /* don't stop any currently playing sound */
        SND_NOWAIT = 0x00002000, /* don't wait if the driver is busy */
        SND_ALIAS = 0x00010000, /* name is a registry alias */
        SND_ALIAS_ID = 0x00110000, /* alias is a predefined ID */
        SND_FILENAME = 0x00020000, /* name is file name */
        SND_RESOURCE = 0x00040004  /* name is resource name or atom */
       }

       [DllImport("winmm")]
       public static extern bool PlaySound( string szSound, IntPtr hMod, PlaySoundFlags flags );
      }

      public class Sound
      {
       public static void Play( string strFileName,int sign)
       {
        //Helpers1.PlaySound( strFileName, IntPtr.Zero, Helpers1.PlaySoundFlags.SND_FILENAME | Helpers1.PlaySoundFlags.SND_ASYNC );
        //Helpers1 Helpers1=new Helpers1();
        if(sign==1)
         Helpers1.PlaySound( strFileName, IntPtr.Zero, Helpers1.PlaySoundFlags.SND_FILENAME | Helpers1.PlaySoundFlags.SND_ASYNC |  Helpers1.PlaySoundFlags.SND_NODEFAULT);    
        else
         Helpers2.PlaySound( strFileName, IntPtr.Zero, Helpers2.PlaySoundFlags.SND_FILENAME | Helpers2.PlaySoundFlags.SND_ASYNC);    
       }
      }
     }
    }
    然后调用PlaySound.Sound.Play(@"..".."music"background.WAV",1);
    或者PlaySound.Sound.Play(@"..".."music"front.WAV",2);
    音乐类型为WAV格式

    (二)通过输入的汉字或字母发音
    需要添加引用using SpeechLib;
    下载地址:https://files.cnblogs.com/holym/Interop.SpeechLib.rar
        SpVoice Voice = new SpVoice();
        SpeechVoiceSpeakFlags SpFlags = SpeechVoiceSpeakFlags.SVSFDefault;
        Voice.Voice = Voice.GetVoices(string.Empty, string.Empty).Item(024);    //其中3为中文,024为英文
       Voice.Speak("alarm",SpFlags);
       Voice.Voice = Voice.GetVoices(string.Empty, string.Empty).Item(3);
       Voice.Speak("备容量系统有问题",SpFlags);

    (三)发出一阵鸣音
    using System.Runtime.InteropServices;

    [DllImport("kernel32.dll")]
     public static extern bool Beep(int frequency, int duration);

    System.Random r = new Random();
    for(int i = 0; i < 10000; i++) 
    {
         int c = r.Next(10000);      
         Beep(0, 100);
     }
  • 相关阅读:
    go语言入门(三)
    go语言入门(二)
    Nand Flash 基础
    哈希技术
    NorFlash基础
    二阶构造模式
    C++基础知识汇总
    Arm寄存器介绍及汇编基础
    Linux Makefile详解
    Linux链接器脚本详解
  • 原文地址:https://www.cnblogs.com/longyi/p/1459774.html
Copyright © 2020-2023  润新知