예제 #1
0
        private static bool SetAudioFormat(string format)
        {
            int bitPerSample;

            System.Speech.AudioFormat.AudioBitsPerSample    sysAudioBitsPerSample;
            Microsoft.Speech.AudioFormat.AudioBitsPerSample msftAudioBitsPerSample;
            System.Speech.AudioFormat.AudioChannel          sysAudioChannel;
            Microsoft.Speech.AudioFormat.AudioChannel       msftAudioChannel;
            decimal rawInput;

            string[] parts = Regex.Split(format, "_");

            if (parts.Length != 3)
            {
                Console.WriteLine("Invalid Audio Format");
                return(false);
            }

            if (Decimal.TryParse(parts[0], out rawInput) && (rawInput % 1) == 0 && rawInput > 0)
            {
                bitPerSample = (int)rawInput;
            }
            else
            {
                Console.WriteLine("Invalid Audio Format: SamplePerSecond must be a positive integer");
                return(false);
            }


            if (Decimal.TryParse(parts[1], out rawInput) && (rawInput % 1) == 0 && rawInput > 0)
            {
                if (rawInput == 8.0M)
                {
                    sysAudioBitsPerSample  = System.Speech.AudioFormat.AudioBitsPerSample.Eight;
                    msftAudioBitsPerSample = Microsoft.Speech.AudioFormat.AudioBitsPerSample.Eight;
                }
                else if (rawInput == 16.0M)
                {
                    sysAudioBitsPerSample  = System.Speech.AudioFormat.AudioBitsPerSample.Sixteen;
                    msftAudioBitsPerSample = Microsoft.Speech.AudioFormat.AudioBitsPerSample.Sixteen;
                }
                else
                {
                    Console.WriteLine("Invalid Audio Format: BitsPerSample must be either 8 or 16");
                    return(false);
                }
            }
            else
            {
                Console.WriteLine("Invalid Audio Format: BitsPerSample must be either 8 or 16");
                return(false);
            }

            if (parts[2].Equals("Mono"))
            {
                sysAudioChannel  = System.Speech.AudioFormat.AudioChannel.Mono;
                msftAudioChannel = Microsoft.Speech.AudioFormat.AudioChannel.Mono;
            }
            else if (parts[2].Equals("Stereo"))
            {
                sysAudioChannel  = System.Speech.AudioFormat.AudioChannel.Stereo;
                msftAudioChannel = Microsoft.Speech.AudioFormat.AudioChannel.Stereo;
            }
            else
            {
                Console.WriteLine("Invalid Audio Format: AudioChannel must be either Mono or Stereo");
                return(false);
            }

            sysAF  = new System.Speech.AudioFormat.SpeechAudioFormatInfo(bitPerSample, sysAudioBitsPerSample, sysAudioChannel);
            msftAF = new Microsoft.Speech.AudioFormat.SpeechAudioFormatInfo(bitPerSample, msftAudioBitsPerSample, msftAudioChannel);

            return(true);
        }
        private static bool SetAudioFormat(string format)
        {
            
            int bitPerSample;
            System.Speech.AudioFormat.AudioBitsPerSample sysAudioBitsPerSample;
            Microsoft.Speech.AudioFormat.AudioBitsPerSample msftAudioBitsPerSample;
            System.Speech.AudioFormat.AudioChannel sysAudioChannel;
            Microsoft.Speech.AudioFormat.AudioChannel msftAudioChannel;
            decimal rawInput;

            string[] parts = Regex.Split(format, "_");

            if (parts.Length != 3)
            {
                Console.WriteLine("Invalid Audio Format");
                return false;
            }

            if (Decimal.TryParse(parts[0], out rawInput) && (rawInput % 1) == 0 && rawInput > 0)
            {
                bitPerSample = (int) rawInput;
            }
            else
            {
                Console.WriteLine("Invalid Audio Format: SamplePerSecond must be a positive integer");
                return false;
            }


            if (Decimal.TryParse(parts[1], out rawInput) && (rawInput % 1) == 0 && rawInput > 0)
            {
                if (rawInput == 8.0M)
                {
                    sysAudioBitsPerSample = System.Speech.AudioFormat.AudioBitsPerSample.Eight;
                    msftAudioBitsPerSample = Microsoft.Speech.AudioFormat.AudioBitsPerSample.Eight;
                }
                else if (rawInput == 16.0M)
                {
                    sysAudioBitsPerSample = System.Speech.AudioFormat.AudioBitsPerSample.Sixteen;
                    msftAudioBitsPerSample = Microsoft.Speech.AudioFormat.AudioBitsPerSample.Sixteen;
                }
                else
                {
                    Console.WriteLine("Invalid Audio Format: BitsPerSample must be either 8 or 16");
                    return false;
                }
            }
            else
            {
                Console.WriteLine("Invalid Audio Format: BitsPerSample must be either 8 or 16");
                return false;
            }

            if (parts[2].Equals("Mono"))
            {
                sysAudioChannel = System.Speech.AudioFormat.AudioChannel.Mono;
                msftAudioChannel = Microsoft.Speech.AudioFormat.AudioChannel.Mono;
            }
            else if (parts[2].Equals("Stereo"))
            {
                sysAudioChannel = System.Speech.AudioFormat.AudioChannel.Stereo;
                msftAudioChannel = Microsoft.Speech.AudioFormat.AudioChannel.Stereo;
            }
            else
            {
                Console.WriteLine("Invalid Audio Format: AudioChannel must be either Mono or Stereo");
                return false;
            }

            sysAF = new System.Speech.AudioFormat.SpeechAudioFormatInfo(bitPerSample, sysAudioBitsPerSample, sysAudioChannel);
            msftAF = new Microsoft.Speech.AudioFormat.SpeechAudioFormatInfo(bitPerSample, msftAudioBitsPerSample, msftAudioChannel);

            return true;

        }