| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- import os
- import time
- from dashscope.audio.asr import *
- # 若没有将API Key配置到环境变量中,需将下面这行代码注释放开,并将apiKey替换为自己的API Key
- import dashscope
- dashscope.api_key = "sk-92f2fec23dc94de49a31c9945d04e5f7"
- from datetime import datetime
- def get_timestamp():
- now = datetime.now()
- formatted_timestamp = now.strftime("[%Y-%m-%d %H:%M:%S.%f]")
- return formatted_timestamp
- class Callback(RecognitionCallback):
- def on_complete(self) -> None:
- print(get_timestamp() + ' Recognition completed') # recognition complete
- def on_error(self, result: RecognitionResult) -> None:
- print('Recognition task_id: ', result.request_id)
- print('Recognition error: ', result.message)
- exit(0)
- def on_event(self, result: RecognitionResult) -> None:
- sentence = result.get_sentence()
- if 'text' in sentence:
- print(get_timestamp() + ' RecognitionCallback text: ', sentence['text'])
- if RecognitionResult.is_sentence_end(sentence):
- print(get_timestamp() +
- 'RecognitionCallback sentence end, request_id:%s, usage:%s'
- % (result.get_request_id(), result.get_usage(sentence)))
- callback = Callback()
- recognition = Recognition(model='paraformer-realtime-v2',
- format='wav',
- sample_rate=16000,
- # “language_hints”只支持paraformer-realtime-v2模型
- language_hints=['zh', 'en'],
- callback=callback)
- recognition.start()
- try:
- audio_data: bytes = None
- f = open("asr_example.wav", 'rb')
- if os.path.getsize("asr_example.wav"):
- while True:
- audio_data = f.read(3200)
- if not audio_data:
- break
- else:
- recognition.send_audio_frame(audio_data)
- time.sleep(0.1)
- else:
- raise Exception(
- 'The supplied file was empty (zero bytes long)')
- f.close()
- except Exception as e:
- raise e
- recognition.stop()
- print(
- '[Metric] requestId: {}, first package delay ms: {}, last package delay ms: {}'
- .format(
- recognition.get_last_request_id(),
- recognition.get_first_package_delay(),
- recognition.get_last_package_delay(),
- ))
|