def asrc_short_example(): ak = sys_ak # 参考https://support.huaweicloud.com/sdkreference-sis/sis_05_0003.html sk = sys_sk # 参考https://support.huaweicloud.com/sdkreference-sis/sis_05_0003.html region = sys_region # region,如cn-north-4 project_id = sys_project_id # 同region一一对应,参考https://support.huaweicloud.com/api-sis/sis_03_0008.html path = input_path # 文件位置, 需要具体到文件,如D:/test.wav # 音频格式,默认不改动 path_audio_format = 'wav' # 音频格式,如wav等,详见api文档 path_property = 'chinese_16k_common' # language_sampleRate_domain, 如chinese_8k_common,详见api文档 # step1 初始化客户端 config = SisConfig() config.set_connect_timeout(5) # 设置连接超时 config.set_read_timeout(10) # 设置读取超时 # 设置代理,使用代理前一定要确保代理可用。 代理格式可为[host, port] 或 [host, port, username, password] # config.set_proxy(proxy) asr_client = AsrCustomizationClient(ak, sk, region, project_id, sis_config=config) # step2 构造请求 data = io_utils.encode_file(path) asr_request = AsrCustomShortRequest(path_audio_format, path_property, data) # 所有参数均可不设置,使用默认值 # 设置是否添加标点,yes or no,默认no asr_request.set_add_punc('yes') # 设置是否添加热词表id,没有则不填 # asr_request.set_vocabulary_id(None) # step3 发送请求,返回结果,返回结果为json格式 result = asr_client.get_short_response(asr_request) # print(json.dumps(result)) return(json.dumps(result, indent=2, ensure_ascii=False))
def hot_word_example(name): """ 1. 热词使用包含创建、更新、查询、删除等,一个用户可以创建多个热词表,一个热词表可以包含多个热词。一个vocabulary_id对应一个热词表。 2. 目前支持一个用户最多创建10个热词表,一个热词表最多包含1024个热词。 3. 热词可在一句话识别、录音文件识别、实时语音转写使用。例如将地名和人名作为热词,则语音可以准确识别出人名和地名。 :return: 无 """ # 初始化客户端 config = SisConfig() config.set_connect_timeout(10) # 设置连接超时 config.set_read_timeout(10) # 设置读取超时 # 设置代理,使用代理前一定要确保代理可用。 代理格式可为[host, port] 或 [host, port, username, password] # config.set_proxy(proxy) hot_word_client = HotWordClient(ak, sk, region, project_id, sis_config=config) # option 1 创建热词表 word_list.append('test') create_request = HotWordRequest(name, word_list) # 可选,热词语言,目前仅支持中文 chinese_mandarin。 create_request.set_language('chinese_mandarin') # 可选,热词表描述信息 create_request.set_description('test') create_result = hot_word_client.create(create_request) # 返回结果为json格式 print('成功创建热词表') print(json.dumps(create_result, indent=2, ensure_ascii=False)) """ # option 2 根据热词表id 更新热词表。新的热词表会替换旧的热词表。使用前需确保热词表id已存在。 word_list.append('进入系统') update_request = HotWordRequest('test2', word_list) update_result = hot_word_client.update(update_request, vocabulary_id) # 返回结果为json格式 print('成功更新热词表', vocabulary_id) print(json.dumps(update_result, indent=2, ensure_ascii=False)) """ # option 3 查看热词表列表 query_list_result = hot_word_client.query_list() print(json.dumps(query_list_result, indent=2, ensure_ascii=False)) # option 4 根据热词表id查询具体热词表信息,使用前需确保热词表id已存在。 query_result = hot_word_client.query_by_vocabulary_id(vocabulary_id) print(json.dumps(query_result, indent=2, ensure_ascii=False)) # option 5 根据热词表id删除热词表,使用前需确保热词表id已存在。 delete_result = hot_word_client.delete(vocabulary_id) if delete_result is None: print('成功删除热词表', vocabulary_id) else: print(json.dumps(delete_result, indent=2, ensure_ascii=False))
def rasr_detect(path): """ 实时语音转写demo """ # step1 初始化RasrClient, 暂不支持使用代理 my_callback = MyCallback() config = SisConfig() # 设置连接超时,默认是10 config.set_connect_timeout(10) # 设置读取超时, 默认是10 config.set_read_timeout(10) # 设置connect lost超时,一般在普通并发下,不需要设置此值。默认是4 config.set_connect_lost_timeout(4) # websocket暂时不支持使用代理 rasr_client = RasrClient(ak=ak, sk=sk, use_aksk=True, region=region, project_id=project_id, callback=my_callback, config=config) # step2 构造请求 request = RasrRequest(audio_format, property) # 所有参数均可不设置,使用默认值 request.set_add_punc('yes') # 设置是否添加标点, yes or no, 默认no request.set_vad_head(10000) # 设置有效头部, [0, 60000], 默认10000 request.set_vad_tail(500) # 设置有效尾部,[0, 3000], 默认500 request.set_max_seconds(30) # 设置一句话最大长度,[0, 60], 默认30 request.set_interim_results('no') # 设置是否返回中间结果,yes or no,默认no request.set_digit_norm('no') # 设置是否将语音中数字转写为阿拉伯数字,yes or no,默认yes request.set_vocabulary_id( '039061ac-d8f7-44e1-b2f5-6cb1c4b82c6a') # 设置热词表id,若不存在则不填写,否则会报错 # step3 选择连接模式 rasr_client.short_stream_connect(request) # 流式一句话模式 # rasr_client.sentence_stream_connect(request) # 实时语音转写单句模式 # rasr_client.continue_stream_connect(request) # 实时语音转写连续模式 # step4 发送音频 rasr_client.send_start() # 连续模式下,可多次发送音频,发送格式为byte数组 with open(path, 'rb') as f: data = f.read() rasr_client.send_audio(data) # 可选byte_len和sleep_time参数,建议使用默认值 rasr_client.send_end() # step5 关闭客户端,使用完毕后一定要关闭,否则服务端20s内没收到数据会报错并主动断开。 rasr_client.close() response_text = re.findall(r'"text": "(.*?)。', str(my_callback.response)) print(response_text) return response_text
def tts_example(text): """ 语音合成demo """ ak = 'GVOC7YSBOBAO3VZ38TPW' sk = 'EpbGXUHTHoffHjj07W8UNWsGhxNEnEPESp7Gr6Qj' region = 'cn-north-1' # region,如cn-north-1 # text = '欢迎在win10系统中,默认使用的是微软输入法。最近有用户反应称使用微软输入法打出来的字都是繁体的,该怎么办?出现这样的情况是因为微软输入法本身支持简体和繁体输入,并且可以通过快捷键切换,我们只需按下面步骤进行设置即可还原成简单!' path = 'huawei.wav' # 保存路径,需要具体到音频文件,如D:/test.wav,可在设置中选择不保存本地 # step1 初始化客户端 config = SisConfig() config.set_connect_timeout(10) # 设置连接超时 config.set_read_timeout(10) # 设置读取超时 # 设置代理,使用代理前一定要确保代理可用。 代理格式可为[host, port] 或 [host, port, username, password] # config.set_proxy(proxy) tts_client = TtsClient(ak, sk, region, sis_config=config) # step2 构造请求 tts_request = TtsRequest(text) # 设置请求,所有参数均可不设置,使用默认参数 # 设置发声人,默认xiaoyan,xiaoqi 正式女生xiaoyu正式男生xiaoyan情感女生xiaowang童声 tts_request.set_voice_name('xiaoyan') # 设置采样率,默认8k tts_request.set_sample_rate('8k') # 设置音量,[-20, 20],默认0 tts_request.set_volume(0) # 设置音高, [-500, 500], 默认0 tts_request.set_pitch_rate(2) # 设置音速, [-500, 500], 默认0 tts_request.set_speech_speed(-10) # 设置是否保存,默认False tts_request.set_saved(True) # 设置保存路径,只有设置保存,此参数才生效 tts_request.set_saved_path(path) # # step3 发送请求,返回结果,格式为json. 如果设置保存,可在指定路径里查看保存的音频 try: result = tts_client.get_tts_response(tts_request) except ClientException as e: print(e) except ServerException as e: print(e) # print(json.dumps(result, indent=2, ensure_ascii=False)) print("已合成" + path)
def tts_example(text): """ 华为云sis语音合成 """ # ak = 'GVOC7YSBOBAO3VZ38TPW' # sk = 'EpbGXUHTHoffHjj07W8UNWsGhxNEnEPESp7Gr6Qj' region = 'cn-north-1' path = RESULT_FILE # step1 初始化客户端 config = SisConfig() config.set_connect_timeout(10) # 设置连接超时 config.set_read_timeout(10) # 设置读取超时 # 设置代理,使用代理前一定要确保代理可用。 代理格式可为[host, port] 或 [host, port, username, password] # config.set_proxy(proxy) tts_client = TtsClient(ak, sk, region, sis_config=config) # step2 构造请求 tts_request = TtsRequest(text) # 设置请求,所有参数均可不设置,使用默认参数 # 设置发声人,默认xiaoyan,xiaoqi 正式女生xiaoyu正式男生xiaoyan情感女生xiaowang童声 tts_request.set_voice_name('xiaoyan') # 设置采样率,默认8k tts_request.set_sample_rate('8k') # 设置音量,[-20, 20],默认0 tts_request.set_volume(0) # 设置音高, [-500, 500], 默认0 tts_request.set_pitch_rate(2) # 设置音速, [-500, 500], 默认0 tts_request.set_speech_speed(-10) # 设置是否保存,默认False tts_request.set_saved(True) # 设置保存路径,只有设置保存,此参数才生效 tts_request.set_saved_path(path) # print("已合成"+path) # # step3 发送请求,返回结果,格式为json. 如果设置保存,可在指定路径里查看保存的音频 try: result = tts_client.get_tts_response(tts_request) except ClientException as e: print(e) except ServerException as e: print(e)
def text2speech(text, out_file): """ 语音合成 """ ak = 'GVOC7YSBOBAO3VZ38TPW' sk = 'EpbGXUHTHoffHjj07W8UNWsGhxNEnEPESp7Gr6Qj' region = 'cn-north-1' # region,如cn-north-1 path = out_file # 保存路径,需要具体到音频文件,如D:/test.wav,可在设置中选择不保存本地 # print("合成 "+text) # step1 初始化客户端 config = SisConfig() config.set_connect_timeout(10) # 设置连接超时 config.set_read_timeout(10) # 设置读取超时 # 设置代理,使用代理前一定要确保代理可用。 代理格式可为[host, port] 或 [host, port, username, password] # config.set_proxy(proxy) tts_client = TtsClient(ak, sk, region, sis_config=config) # step2 构造请求 tts_request = TtsRequest(text) # 设置请求,所有参数均可不设置,使用默认参数 # 设置发声人,默认xiaoyan,xiaoqi 正式女生xiaoyu正式男生xiaoyan情感女生xiaowang童声 tts_request.set_voice_name('xiaoyu') # 设置采样率,默认8k tts_request.set_sample_rate('8k') # 设置音量,[-20, 20],默认0 tts_request.set_volume(17) # 设置音高, [-500, 500], 默认0 tts_request.set_pitch_rate(4) # 设置音速, [-500, 500], 默认0 tts_request.set_speech_speed(0) # 设置是否保存,默认False tts_request.set_saved(True) # 设置保存路径,只有设置保存,此参数才生效 tts_request.set_saved_path(path) # # step3 发送请求,返回结果,格式为json. 如果设置保存,可在指定路径里查看保存的音频 try: result = tts_client.get_tts_response(tts_request) except ClientException as e: print(e) except ServerException as e: print(e) # print(json.dumps(result, indent=2, ensure_ascii=False)) print("已合成语音片段 " + text)
def ttsc_example(): """ 定制语音合成demo """ ak = sys_ak # 参考https://support.huaweicloud.com/sdkreference-sis/sis_05_0003.html sk = sys_sk # 参考https://support.huaweicloud.com/sdkreference-sis/sis_05_0003.html region = sys_region # region,如cn-north-4 project_id = sys_project_id # 同region一一对应,参考https://support.huaweicloud.com/api-sis/sis_03_0008.html text = output_text # 待合成文本,不超过500字 path = output_path # 保存路径,如D:/test.wav。 可在设置中选择不保存本地 # step1 初始化客户端 config = SisConfig() config.set_connect_timeout(5) # 设置连接超时,单位s config.set_read_timeout(10) # 设置读取超时,单位s # 设置代理,使用代理前一定要确保代理可用。 代理格式可为[host, port] 或 [host, port, username, password] # config.set_proxy(proxy) ttsc_client = TtsCustomizationClient(ak, sk, region, project_id, sis_config=config) # step2 构造请求 ttsc_request = TtsCustomRequest(text) # 设置请求,所有参数均可不设置,使用默认参数 # 设置属性字符串, language_speaker_domain, 默认chinese_xiaoyan_common, 参考api文档 ttsc_request.set_property('chinese_xiaoyan_common') # 设置音频格式,默认wav,可选mp3和pcm ttsc_request.set_audio_format('wav') # 设置采样率,8000 or 16000, 默认8000 ttsc_request.set_sample_rate('8000') # 设置音量,[0, 100],默认50 ttsc_request.set_volume(50) # 设置音高, [-500, 500], 默认0 ttsc_request.set_pitch(0) # 设置音速, [-500, 500], 默认0 ttsc_request.set_speed(0) # 设置是否保存,默认False ttsc_request.set_saved(True) # 设置保存路径,只有设置保存,此参数才生效 ttsc_request.set_saved_path(path) # step3 发送请求,返回结果。如果设置保存,可在指定路径里查看保存的音频。 result = ttsc_client.get_ttsc_response(ttsc_request)