示例#1
0
    def test_transcribe(self):
        def abs_path(rel_path):
            return os.path.join(os.path.dirname(__file__), '../..', rel_path)

        cheetah = Cheetah(
            library_path=abs_path('/home/nithin/project1/libpv_cheetah.so'),
            acoustic_model_path=abs_path(
                '/home/nithin/project1/acoustic_model.pv'),
            language_model_path=abs_path(
                '/home/nithin/project1/language_model.pv'),
            license_path=abs_path(
                '/home/nithin/project1/cheetah_eval_linux_public.lic'))

        audio, sample_rate = soundfile.read(
            abs_path('/home/nithin/project1/audio_samples/test.wav'),
            dtype='int16')
        assert sample_rate == cheetah.sample_rate

        transcript = ''
        num_frames = len(audio) // cheetah.frame_length
        for i in range(num_frames):
            frame = audio[i * cheetah.frame_length:(i + 1) *
                          cheetah.frame_length]
            partial_transcript, _ = cheetah.process(frame)
            transcript += partial_transcript

        final_transcript = cheetah.flush()
        transcript += final_transcript
        self.assertEqual(
            transcript,
            "MISTER QUILTER IS THE APOSTLE OF THE MIDDLE CLASSES AND WE ARE GLAD TO WELCOME HIS GOSPEL"
        )
示例#2
0
def main():
    def _abs_path(rel_path):
        return os.path.join(os.path.dirname(__file__), '../..', rel_path)

    parser = argparse.ArgumentParser()

    parser.add_argument('--library_path',
                        help="absolute path to Cheetah's dynamic library",
                        type=str,
                        default=_abs_path('lib/linux/x86_64/libpv_cheetah.so'))

    parser.add_argument('--acoustic_model_path',
                        help='absolute path to acoustic model parameter file',
                        type=str,
                        default=_abs_path('lib/common/acoustic_model.pv'))

    parser.add_argument('--language_model_path',
                        help='absolute path to language model parameter file',
                        type=str,
                        default=_abs_path('lib/common/language_model.pv'))

    parser.add_argument(
        '--license_path',
        help='absolute path to license file',
        type=str,
        default=_abs_path('resources/license/cheetah_eval_linux_public.lic'))

    parser.add_argument(
        '--audio_paths',
        help='comma-separated absolute paths to audio files to be transcribed',
        type=str,
        required=True)

    args = parser.parse_args()

    cheetah = Cheetah(library_path=args.library_path,
                      acoustic_model_path=args.acoustic_model_path,
                      language_model_path=args.language_model_path,
                      license_path=args.license_path)

    for audio_path in [
            os.path.expanduser(x.strip()) for x in args.audio_paths.split(',')
    ]:
        audio, sample_rate = soundfile.read(audio_path, dtype='int16')
        if sample_rate != cheetah.sample_rate:
            raise ValueError(
                'Cheetah can only process audio data with sample rate of %d' %
                cheetah.sample_rate)

        num_frames = len(audio) // cheetah.frame_length
        transcript = ''
        for i in range(num_frames):
            frame = audio[i * cheetah.frame_length:(i + 1) *
                          cheetah.frame_length]
            partial_transcript, _ = cheetah.process(frame)
            transcript += partial_transcript

        transcript += cheetah.flush()

        print(transcript)
示例#3
0
 def test_animal_status(self):
     z = Zoo("My Zoo", 500, 3, 3)
     z.add_animal(Lion("Leo", "Male", 3), 100)
     z.add_animal(Tiger("Tigy", "Female", 4), 100)
     z.add_animal(Cheetah("Chi", "Female", 2), 100)
     res = z.animals_status()
     self.assertEqual(
         res,
         "You have 3 animals\n----- 1 Lions:\nName: Leo, Age: 3, Gender: Male\n----- 1 Tigers:\nName: Tigy, Age: 4, Gender: Female\n----- 1 Cheetahs:\nName: Chi, Age: 2, Gender: Female"
     )
示例#4
0
    def run(self):
        cheetah = None
        pa = None
        audio_stream = None
        try:
            cheetah = Cheetah(
                library_path=self._library_path,
                acoustic_model_path=self._acoustic_model_path,
                language_model_path=self._language_model_path,
                license_path=self._license_path,
                endpoint_duration_sec=1)

            pa = pyaudio.PyAudio()
            audio_stream = pa.open(
                rate=cheetah.sample_rate,
                channels=1,
                format=pyaudio.paInt16,
                input=True,
                frames_per_buffer=cheetah.frame_length,
                input_device_index=self._input_device_index)

            while True:
                pcm = audio_stream.read(cheetah.frame_length)
                pcm = struct.unpack_from("h" * cheetah.frame_length, pcm)

                if self._output_path is not None:
                    self._recorded_frames.append(pcm)

                partial_transcript, is_endpoint = cheetah.process(pcm)
                print(partial_transcript, end='', flush=True)
                if is_endpoint:
                    print(cheetah.flush())
        except Exception as e:
            print(e)
        finally:
            if cheetah is not None:
                print(cheetah.flush())
                cheetah.delete()

            if audio_stream is not None:
                audio_stream.close()

            if pa is not None:
                pa.terminate()

            if self._output_path is not None and len(self._recorded_frames) > 0:
                recorded_audio = np.concatenate(self._recorded_frames, axis=0).astype(np.int16)
                soundfile.write(self._output_path, recorded_audio, samplerate=cheetah.sample_rate, subtype='PCM_16')
示例#5
0
        '--license_file_path',
        help='absolute path to license file',
        type=str,
        default=_abs_path(
            '../../resources/license/cheetah_eval_linux_public.lic'))

    parser.add_argument(
        '--audio_paths',
        help='comma-separated absolute paths to audio files to be transcribed',
        type=str,
        required=True)

    args = parser.parse_args()

    cheetah = Cheetah(library_path=args.library_path,
                      acoustic_model_file_path=args.acoustic_model_file_path,
                      language_model_file_path=args.language_model_file_path,
                      license_file_path=args.license_file_path)

    for audio_path in [
            os.path.expanduser(x.strip()) for x in args.audio_paths.split(',')
    ]:
        audio, sample_rate = soundfile.read(audio_path, dtype='int16')
        if sample_rate != cheetah.sample_rate:
            raise ValueError(
                'Cheetah can only process audio data with sample rate of %d' %
                cheetah.sample_rate)

        num_frames = len(audio) // cheetah.frame_length
        for i in range(num_frames):
            frame = audio[i * cheetah.frame_length:(i + 1) *
                          cheetah.frame_length]
示例#6
0
 def test_cheetah_repr(self):
     c = Cheetah("n", "f", 2)
     res = str(c)
     self.assertEqual(res, "Name: n, Age: 2, Gender: f")
示例#7
0
 def test_cheetah_get_needs(self):
     c = Cheetah("r", "m", 6)
     res = c.get_needs()
     self.assertEqual(res, 60)
示例#8
0
 def test_cheetah_init(self):
     c = Cheetah("l", "f", 3)
     self.assertEqual(c.name, "l")
     self.assertEqual(c.gender, "f")
     self.assertEqual(c.age, 3)
            if worker.__class__.__name__ == 'Vet'
        ]
        return f"You have {len(self.workers)} workers\n" \
               f"----- {len(keepers)} Keepers:\n" \
               f"{NEW_LINE.join(keepers)}\n" \
               f"----- {len(caretakers)} Caretakers:\n" \
               f"{NEW_LINE.join(caretakers)}\n" \
               f"----- {len(vets)} Vets:\n" \
               f"{NEW_LINE.join(vets)}"


zoo = Zoo("Zootopia", 3000, 5, 8)

# Animals creation
animals = [
    Cheetah("Cheeto", "Male", 2),
    Cheetah("Cheetia", "Female", 1),
    Lion("Simba", "Male", 4),
    Tiger("Zuba", "Male", 3),
    Tiger("Tigeria", "Female", 1),
    Lion("Nala", "Female", 4)
]

# Animal prices
prices = [200, 190, 204, 156, 211, 140]

# Workers creation
workers = [
    Keeper("John", 26, 100),
    Keeper("Adam", 29, 80),
    Keeper("Anna", 31, 95),
示例#10
0
    parser.add_argument(
        '--license_path',
        help='absolute path to license file',
        type=str,
        default=_abs_path('resources/license/cheetah_eval_linux_public.lic'))

    parser.add_argument(
        '--audio_paths',
        help='comma-separated absolute paths to audio files to be transcribed',
        type=str,
        required=True)

    args = parser.parse_args()

    cheetah = Cheetah(library_path=args.library_path,
                      acoustic_model_path=args.acoustic_model_path,
                      language_model_path=args.language_model_path,
                      license_path=args.license_path)

    for audio_path in [
            os.path.expanduser(x.strip()) for x in args.audio_paths.split(',')
    ]:
        audio, sample_rate = soundfile.read(audio_path, dtype='int16')
        if sample_rate != cheetah.sample_rate:
            raise ValueError(
                'Cheetah can only process audio data with sample rate of %d' %
                cheetah.sample_rate)

        num_frames = len(audio) // cheetah.frame_length
        transcript = ''
        for i in range(num_frames):
            frame = audio[i * cheetah.frame_length:(i + 1) *
示例#11
0
def init_cheetah(args):
    """Create an instance of Cheetah and return it"""
    return Cheetah(library_path=args.library_path,
                   acoustic_model_file_path=args.acoustic_model_file_path,
                   language_model_file_path=args.language_model_file_path,
                   license_file_path=args.license_file_path)