A respiratory therapy apparatus , comprising: a blower for generating an air flow for a patient, the blower being associated with a blower motor, wherein the blower motor is configured to be driven by a control signal; one or more sensors configured to measure at least a flow rate, the one or more sensor further configured to measure a motor speed or pressure; and a control system configured to: detect a breath cycle of the patient by: receiving a first input comprising one or more flow measurements from the one or more sensors , receiving a second input comprising one or more pressure measurements from at least one pressure sensor or one or more motor speed measurements associated with the blower motor, and generating a breath cycle waveform using at least the received flow measurements, wherein the breath cycle waveform comprises a plurality of alternating inspiration and expiration periods by the patient, and synchronize the control signal with the breath cycle by: identifying a phase of the breath cycle waveform, and iteratively updating a phase of the control signal to achieve a determined phase difference between the control signal and the breath cycle waveform, such that the control signal is configured to adjust a speed of the blower motor based upon the patient's inspiration and expiration. a blower for generating an air flow for a patient, the blower being associated with a blower motor, wherein the blower motor is configured to be driven by a control signal; one or more sensors configured to measure at least a flow rate, the one or more sensor further configured to measure a motor speed or pressure; and a control system configured to: detect a breath cycle of the patient by: receiving a first input comprising one or more flow measurements from the one or more sensors , receiving a second input comprising one or more pressure measurements from at least one pressure sensor or one or more motor speed measurements associated with the blower motor, and generating a breath cycle waveform using at least the received flow measurements, wherein the breath cycle waveform comprises a plurality of alternating inspiration and expiration periods by the patient, and synchronize the control signal with the breath cycle by: identifying a phase of the breath cycle waveform, and iteratively updating a phase of the control signal to achieve a determined phase difference between the control signal and the breath cycle waveform, such that the control signal is configured to adjust a speed of the blower motor based upon the patient's inspiration and expiration. receiving a first input comprising one or more flow measurements from the one or more sensors , receiving a second input comprising one or more pressure measurements from at least one pressure sensor or one or more motor speed measurements associated with the blower motor, and generating a breath cycle waveform using at least the received flow measurements, wherein the breath cycle waveform comprises a plurality of alternating inspiration and expiration periods by the patient, and synchronize the control signal with the breath cycle by: identifying a phase of the breath cycle waveform, and iteratively updating a phase of the control signal to achieve a determined phase difference between the control signal and the breath cycle waveform, such that the control signal is configured to adjust a speed of the blower motor based upon the patient's inspiration and expiration. identifying a phase of the breath cycle waveform, and iteratively updating a phase of the control signal to achieve a determined phase difference between the control signal and the breath cycle waveform, such that the control signal is configured to adjust a speed of the blower motor based upon the patient's inspiration and expiration. <EOS>