/// <summary>
        /// The KinectHelper constructor
        /// </summary>
        public KinectHelper()
        {
            kinectSensor = KinectSensor.GetDefault();

            if (kinectSensor != null)
            {
                kinectSensor.Open();
                if (kinectSensor.IsOpen)
                {
                    // grab the audio stream
                    IReadOnlyList <AudioBeam> audioBeamList = this.kinectSensor.AudioSource.AudioBeams;
                    Stream audioStream = audioBeamList[0].OpenInputStream();
                    this.convertStream = new KinectAudioStream(audioStream);

                    kinectBody     = kinectSensor.BodyFrameSource.OpenReader();
                    kinectColor    = kinectSensor.ColorFrameSource.OpenReader();
                    kinectDepth    = kinectSensor.DepthFrameSource.OpenReader();
                    kinectInfrared = kinectSensor.InfraredFrameSource.OpenReader();
                }
                else
                {
                    throw new Exception("Kinect - Cannot open the Kinect Sensor to receive data!");
                }
            }
            else
            {
                throw new Exception("Kinect - Cannot find a Kinect Sensor to open!");
            }
        }
        /// <summary>
        /// Dispose the kinect and it's readers
        /// </summary>
        public void Dispose()
        {
            if (kinectBody != null)
            {
                kinectBody.Dispose();
                kinectBody = null;
            }

            if (kinectColor != null)
            {
                kinectColor.Dispose();
                kinectColor = null;
            }

            if (kinectDepth != null)
            {
                kinectDepth.Dispose();
                kinectDepth = null;
            }

            if (kinectInfrared != null)
            {
                kinectInfrared.Dispose();
                kinectInfrared = null;
            }

            if (convertStream != null)
            {
                convertStream.Close();
                convertStream.Dispose();
                convertStream = null;
            }

            if (kinectSensor != null)
            {
                kinectSensor.Close();
                kinectSensor = null;
            }

            if (speechEngine != null)
            {
                speechEngine.Dispose();
                speechEngine = null;
            }
        }