test_stt_xjp1.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import os
  2. import time
  3. from dashscope.audio.asr import *
  4. # 若没有将API Key配置到环境变量中,需将下面这行代码注释放开,并将apiKey替换为自己的API Key
  5. import dashscope
  6. dashscope.api_key = "sk-92f2fec23dc94de49a31c9945d04e5f7"
  7. from datetime import datetime
  8. def get_timestamp():
  9. now = datetime.now()
  10. formatted_timestamp = now.strftime("[%Y-%m-%d %H:%M:%S.%f]")
  11. return formatted_timestamp
  12. class Callback(RecognitionCallback):
  13. def on_complete(self) -> None:
  14. print(get_timestamp() + ' Recognition completed') # recognition complete
  15. def on_error(self, result: RecognitionResult) -> None:
  16. print('Recognition task_id: ', result.request_id)
  17. print('Recognition error: ', result.message)
  18. exit(0)
  19. def on_event(self, result: RecognitionResult) -> None:
  20. sentence = result.get_sentence()
  21. if 'text' in sentence:
  22. print(get_timestamp() + ' RecognitionCallback text: ', sentence['text'])
  23. if RecognitionResult.is_sentence_end(sentence):
  24. print(get_timestamp() +
  25. 'RecognitionCallback sentence end, request_id:%s, usage:%s'
  26. % (result.get_request_id(), result.get_usage(sentence)))
  27. callback = Callback()
  28. recognition = Recognition(model='paraformer-realtime-v2',
  29. format='wav',
  30. sample_rate=16000,
  31. # “language_hints”只支持paraformer-realtime-v2模型
  32. language_hints=['zh', 'en'],
  33. callback=callback)
  34. recognition.start()
  35. try:
  36. audio_data: bytes = None
  37. f = open("asr_example.wav", 'rb')
  38. if os.path.getsize("asr_example.wav"):
  39. while True:
  40. audio_data = f.read(3200)
  41. if not audio_data:
  42. break
  43. else:
  44. recognition.send_audio_frame(audio_data)
  45. time.sleep(0.1)
  46. else:
  47. raise Exception(
  48. 'The supplied file was empty (zero bytes long)')
  49. f.close()
  50. except Exception as e:
  51. raise e
  52. recognition.stop()
  53. print(
  54. '[Metric] requestId: {}, first package delay ms: {}, last package delay ms: {}'
  55. .format(
  56. recognition.get_last_request_id(),
  57. recognition.get_first_package_delay(),
  58. recognition.get_last_package_delay(),
  59. ))