Download code/test_identity.py from laion/tyger-speaker-predictor: direct link, hf CLI and curl.
- Browser
- Download file 2.16 kB
-
https://huggingface.co/laion/tyger-speaker-predictor/resolve/main/code/test_identity.py
- Command line
-
hf download hf://laion/tyger-speaker-predictor/code/test_identity.py
-
curl -L -o test_identity.py https://huggingface.co/laion/tyger-speaker-predictor/resolve/main/code/test_identity.py
2.16 kB
| import unittest | |
| import numpy as np | |
| from identity import IdentityManager | |
| from audio_sync import estimate_echo_delay | |
| class IdentityTests(unittest.TestCase): | |
| def setUp(self): | |
| self.a=np.eye(192,dtype=np.float32)[0];self.b=np.eye(192,dtype=np.float32)[1] | |
| self.r=np.eye(192,dtype=np.float32)[2];self.now=100 | |
| self.manager=IdentityManager(robo=self.r,clock=lambda:self.now) | |
| def say(self,vector,text): | |
| for _ in range(4):self.manager.observe({'embedding':vector,'kind':'speech','confidence':.9}) | |
| return self.manager.finish(text,enabled=True) | |
| def test_multiuser_and_unknown(self): | |
| self.assertFalse(self.say(self.a,'How are you?')['accepted']) | |
| self.assertTrue(self.say(self.a,'Hey Robo, I would like to talk to you.')['new_user']) | |
| self.assertTrue(self.say(self.a,'Tell me something.')['accepted']) | |
| self.assertTrue(self.say(self.b,'Hallo Robo, ich bin auch hier.')['new_user']) | |
| self.assertEqual(len(self.manager.users),2) | |
| self.assertFalse(self.say(self.r,'Hey Robo, this is your own voice.')['accepted']) | |
| def test_uncertainty_expiry_and_clear(self): | |
| self.manager.observe({'embedding':None,'kind':'overlap','confidence':.9}) | |
| self.assertFalse(self.manager.finish('Hey Robo',enabled=True)['accepted']) | |
| self.say(self.a,'Hey Robo, please enroll me.');self.now+=301 | |
| self.assertFalse(self.say(self.a,'Are you there?')['accepted']) | |
| self.manager.clear();self.assertEqual(self.manager.status()['users'],[]) | |
| def test_calibration(self): | |
| rng=np.random.default_rng(7);reference=rng.normal(0,.03,32000) | |
| for ms in [0,13.5,80,180,440]: | |
| delay=round(ms*16);mic=np.r_[np.zeros(delay),reference][:len(reference)]*.1 | |
| result=estimate_echo_delay(mic,reference) | |
| self.assertTrue(result['available']);self.assertAlmostEqual(result['delay_ms'],ms,places=1) | |
| self.assertFalse(estimate_echo_delay(np.zeros_like(reference),reference)['available']) | |
| self.assertFalse(estimate_echo_delay(rng.normal(size=len(reference)),reference)['available']) | |
| if __name__=='__main__':unittest.main() | |