¼ÇÒ»´Î½²¹ÊÊ»úÆ÷È˵Ŀª·¢-365betÌåÓýÔÚÏßÓйÊÊ£¬ÈûúÆ÷ÈËÀ´¶Á

¼ÇÒ»´Î½²¹ÊÊ»úÆ÷È˵Ŀª·¢-365betÌåÓýÔÚÏßÓйÊÊ£¬ÈûúÆ÷ÈËÀ´¶Á

×î½ü¹¤×÷½Ï棬»Ø¼ÒÏÐÏÂÀ´Ö»Ïë±ÕÄ¿ÐÝÏ¢£¬Ò»·ÖÖÓÆÁÄ»¶¼²»ÏëÔÙ¿´£¬È»¶ø365betÌåÓýÔÚÏßÓÖÏë×·¸ü֮ǰ¿´µÄС˵£¬ÓÚÊÇ£¬ÐèÇóÀ´ÁË¡ª¡ª365betÌåÓýÔÚÏßÐèÒªÒ»¸ö¸ø365betÌåÓýÔÚÏß½²¹ÊʵĻúÆ÷ÈË£¡

ä¯ÀÀÆ÷»òÕßÔĶÁÆ÷AppÀïÆäʵҲÓÐÀʶÁ¹¦ÄÜ£¬µ«ÊDZȽϽ©Ó²£¬×ÜÊǽ«ÒýÈËÈëʤµÄÇé½ÚÄî³ÉÁ÷Ë®ÕË£¬·Ö·ÖÖÓÈÃÈËÆú¿Ó£¬365betÌåÓýÔÚÏß365betÌåÓýÔÚÏß¿¼ÂÇ×Ô¼ºÊ¹ÓÃÅÀ³æ¶¨Ê±ÏÂÔØ¸üеÄÕ½ڣ¬¶øºó½«ÎÄ×ֺϳɴ洢µ½ÒôƵÎļþ£¬ÕâÑù²»½ö¿ÉÒÔÑ¡ÔñÒ»¸ö¿¿Æ×µÄÓïÒôºÏ³É¹¤¾ßÀ´´¦ÀíÎÄ×Ö£¬¶øÇÒ±£´æÏÂÀ´µÄÒôƵ»¹ÄÜ·´¸´ÊÕÌý£¬Ò»¾ÙÁ½µÃ¡£

365ÌåÓýͶעÕûºÏÈÝÒ×£¬µ«ÊÇÈçºÎ½«Æä¿ìËÙת»»³ÉÒôÆµÄØ£¿ÄѵÀÒª×Ô¼ºÑµÁ·Ä£ÐÍ¡°Á¶µ¤¡±½â¾ö£¿no no £¬·ÑÁ¦²»Ìֺ㬱Ͼ¹×Ô¼ºÊÖÍ·ÕâµãË㷨֪ʶ·Ç³£Ç³ÏÔ£¬¶øÇÒÓ²¼þÌõ¼þÒ²²»ÔÊÐí£¬±¾×Å¡°ÄÜÓþÍÐС±µÄÔ­Ôò£¬365betÌåÓýÔÚÏß¾ö¶¨ÏÈʹÓÃÊÐÃæÉÏ¿ª·Åƽ̨µÄ²úÆ·À´½â¾ö¡£¾­¹ý¶Ô±È£¬·¢ÏÖÓеÀÖÇÔÆµÄÓïÒôºÏ³É»¹²»´í£¨´Ë´¦¿ÉÌåÑ飩£¬¾ö¶¨Ê¹ÓÃÓеÀÖÇÔÆµÄÓïÒôºÏ³ÉAPI½øÐпª·¢¡£

Ч¹ûÏȶÃΪ¿ì£º

365betÌåÓýÔÚÏßÄÃÀ´Öì×ÔÇåÏÈÉúµÄ¡¶ºÉÌÁÔÂÉ«¡·µÄÆäÖÐÁ½¶Î×÷ΪʵÑéËØ²Ä£¬¿ª·¢Á˼òµ¥µÄdemo£¬×ßͨÁË´Ó¼ÓÔØ365ÌåÓýͶעµ½Éú³ÉÒôƵÎļþµÄÂß¼­£¬ÏÂÃæ365betÌåÓýÔÚÏßÀ´Ïêϸ½éÉÜ¿ª·¢¹ý³Ì¡£

ÐèÒªÓïÒôºÏ³ÉµÄ365ÌåÓýͶע:

´ý·­ÒëµÄ365ÌåÓýͶע

ºÏ³É½á¹û£¨µÚÒ»¶Î£©£º


¶ÔÓ¦ÒôƵÁ´½ÓΪ:

http://music.xf1433.com/up/view.php/14f5c51944701491ebeb73317fb29e16.mp3

ºÏ³É½á¹û£¨µÚ¶þ¶Î£©£º


¶ÔÓ¦ÒôƵÁ´½ÓΪ:

http://music.xf1433.com/up/view.php/3f10780ede6ca4abcc376b6e316ab55c.mp3

µ÷ÓÃAPI½Ó¿ÚµÄ×¼±¸¹¤×÷

Ê×ÏÈ£¬ÊÇÐèÒªÔÚÓеÀÖÇÔÆµÄ¸öÈËÒ³ÃæÉÏ´´½¨ÊµÀý¡¢´´½¨Ó¦Óᢰó¶¨Ó¦ÓúÍʵÀý£¬»ñÈ¡µ½Ó¦ÓõÄidºÍÃÜÔ¿¡£¾ßÌå¸öÈË×¢²áµÄ¹ý³ÌºÍÓ¦Óô´½¨¹ý³ÌÏê¼ûÎÄÕ·ÖÏíÒ»´ÎÅúÁ¿Îļþ·­ÒëµÄ¿ª·¢¹ý³Ì¡£

´´½¨ÊµÀý

¿ª·¢¹ý³ÌÏêϸ½éÉÜ

ÏÂÃæ½éÉܾßÌåµÄ´úÂ뿪·¢¹ý³Ì¡£

Ê×Ïȸù¾ÝÎĵµ·ÖÎöÓеÀÖÇÔÆµÄAPIÊäÈëÊä³ö¹æ·¶¡£ÓïÒôºÏ³ÉAPIµ÷ÓÃÊ®·Ö¼òµ¥£¬¸ÃAPI²ÉÓÃhttps·½Ê½Í¨ÐÅ£¬ËùÐè²ÎÊýÈçÏÂ±í£º

×Ö¶ÎÃû ÀàÐÍ º¬Òå ±ØÌî ±¸×¢
q text ´ýºÏ³ÉÒôƵÎļþµÄ365ÌåÓýͶע×Ö·û´® True ±ÈÈ磺ÄúºÃ
langType text ºÏ³É365ÌåÓýͶעµÄÓïÑÔÀàÐÍ True Ö§³ÖÓïÑÔ
appKey text Ó¦Óà ID True ¿ÉÔÚ Ó¦ÓùÜÀí ²é¿´
salt text UUID True UUID
sign text Ç© True MD5(Ó¦ÓÃID+q+salt+Ó¦ÓÃÃÜÔ¿)
voice text ·­Òë½á¹û·¢ÒôÑ¡Ôñ£¬0ΪŮÉù£¬1ΪÄÐÉù£¬Ä¬ÈÏΪŮÉù false 0
format text Ä¿±êÒôƵ¸ñʽ£¬Ö§³Ömp3 false mp3
speed text ºÏ³ÉÒôƵµÄÓïËÙ false ±ÈÈ磺"1"ΪÕý³£ËÙ¶È
volume text ºÏ³ÉÒôƵµÄÒôÁ¿ false Õý³£Îª"1.00",×î´óΪ"5.00",×îСΪ"0.50"

¼òµ¥¸ÅÀ¨£¬×éÖ¯ºÃ×Ô¼ºµÄÓïÑÔ£¨utf-8±àÂë365ÌåÓýͶע£©£¬¸¨ÒÔÇ©ÃûµÈ±ØÒª²ÎÊý£¬²¢¸æËßAPIËùÐèÒªµÄÒôÆµÌØÕ÷£¬¼´¿ÉµÃµ½Ò»·ÝÁîÈËÂúÒâµÄºÏ³ÉÒôƵ¡£

½Ó¿ÚÊä³öÖУ¬Èç¹ûºÏ³É³É¹¦£¬Õý³£·µ»ØÎª¶þ½øÖÆÓïÒôÎļþ£¬¾ßÌåheaderÐÅÏ¢ Content-type: audio/mp3£¬Èç¹ûºÏ³É³öÏÖ´íÎó£¬Ôò»á·µ»Øjson½á¹û£¬¾ßÌåheaderÐÅϢΪ£ºContent-type: application/json£¬¿É¾Ý´ËÅжÏÔËÐÐÇé¿ö¡£

Demo¿ª·¢£º

Õâ¸ödemoʹÓÃpython3¿ª·¢£¬°üÀ¨maindow.py£¬synthesis.py£¬synthesistool.pyÈý¸öÎļþ£¬·Ö±ðΪdemoµÄ½çÃæ¡¢½çÃæÂß¼­´¦ÀíºÍÓïÒôºÏ³É½Ó¿Úµ÷Óù¤¾ß·â×°¡£

  1. ½çÃæ²¿·Ö£º

    ½çÃæ²¿·Ö´úÂëÈçÏ£¬±È½Ï¼òµ¥¡£

    root=tk.Tk()
    root.title("youdao speech synthesis test")
    frm = tk.Frame(root)
    frm.grid(padx='50', pady='50')
    # Îļþѡȡ°´Å¥
    btn_get_file = tk.Button(frm, text='Ñ¡Ôñ´ýºÏ³ÉÎļþ', command=get_files)
    btn_get_file.grid(row=0, column=0, ipadx='3', ipady='3', padx='10', pady='20')
    # ËùÑ¡ÎļþÁбíչʾ¿ò
    text1 = tk.Text(frm, width='40', height='10')
    text1.grid(row=0, column=1)
    # Æô¶¯°´Å¥
    btn_sure=tk.Button(frm,text="ºÏ³É",command=synthesis_files)
    btn_sure.grid(row=1,column=1)
    

    ÆäÖÐÆô¶¯°´Å¥btn_sureµÄ°ó¶¨Ê¼þsynthesis_files()À´ÊÕ¼¯´øËùÓеÄ365ÌåÓýͶעÎļþ£¬Æô¶¯ºÏ³É£¬²¢´òÓ¡ÔËÐнá¹û:

    def synthesis_files():
        if syn_m.file_paths:
            message=syn_m.get_synthesis_result()
            tk.messagebox.showinfo("Ìáʾ", message)
            os.system('start' + '.\\result')
        else :
            tk.messagebox.showinfo("Ìáʾ","ÎÞÎļþ")
    
  2. synthesis.py

    ÕâÀïÖ÷ÒªÊÇÅäºÏ½çÃæÊµÏÖһЩ365ÌåÓýͶע¶ÁÈ¡ºÍÇëÇó½Ó¿Ú´¦Àí·µ»ØÖµµÄÂß¼­¡£Ê×Ïȶ¨ÒåÒ»¸öSynthesis_model

    class Synthesis_model():
        def __init__(self,file_paths,result_root_path,syn_type):
            self.file_paths=file_paths				# ´ýºÏ³ÉÎļþ·¾¶
            self.result_root_path=result_root_path  # ½á¹û·¾¶
            self.syn_type=syn_type                  # ºÏ³ÉÀàÐÍ
    

    get_synthesis_result()·½·¨ÊµÏÖÁËÅúÁ¿¶ÁÈ¡Îļþ²¢µ÷Óúϳɷ½·¨¡¢´¦Àí·µ»ØÐÅÏ¢µÄÂß¼­£º

        def get_synthesis_result(self):
            syn_result=""
            for file_path in self.file_paths:
                # ¶ÁÈ¡Îļþ
                file_name=os.path.basename(file_path).split('.')[0]
                file_content=open(file_path,encoding='utf-8').read()
                # µ÷Óúϳɷ½·¨
                result=self.synthesis_use_netease(file_name,file_content)
                # ´¦Àí·µ»ØÏûÏ¢
                if result=="1":
                    syn_result=syn_result+file_path+" ok !\n"
                else:
                    syn_result=syn_result+file_path+result
            return syn_result
    

    µ¥¶À¶¨ÒåÁË·½·¨synthesis_use_netease()¾ßÌåʵÏÖµ÷ÓÃAPIµÄ·½·¨£¬ÕâÑùÔö¼ÓÁËdemoµÄÀ©Õ¹ÐÔ£¬ÊµÏÖÁË365ÌåÓýͶעºÏ³ÉÄ£¿é¿É²å°ÎµÄËÉñîºÏÐÎʽ£º

    def synthesis_use_netease(self,file_name,text):
        result=connect(text,'zh-CHS')
        print(result)
        if result.headers['Content-Type']=="audio/mp3":
            millis = int(round(time.time() * 1000))
            filePath = "./result/" + file_name+"-"+str(millis) + ".mp3"
            fo = open(filePath, 'wb')
            fo.write(result.content)
            fo.close()
            return "1"
        else:
            return "error:"+result.content
    
  3. synthesistool.py
    1. synthesistool.pyÖÐÊǺÍÇëÇóÓеÀÖÇÔÆAPIÖ±½ÓÏà¹ØµÄһЩ·½·¨£¬×îºËÐĵÄÊÇconnect()·½·¨£¬ÕûºÏÁËAPIËùÒªÇóµÄ¸÷¸ö²ÎÊý£¬²¢µ÷ÓÃÖ´ÐÐÇëÇóµÄ·½·¨do_request()£¬²¢·µ»ØAPI´¦Àí½á¹û¡£

      def connect(text,lang_type):
          q = text
      
          data = {}
          data['langType'] = lang_type
          salt = str(uuid.uuid1())
          signStr = APP_KEY + q + salt + APP_SECRET
          sign = encrypt(signStr)
          data['appKey'] = APP_KEY
          data['q'] = q
          data['salt'] = salt
          data['sign'] = sign
      
          response = do_request(data)
          return response
      

    ÐèÒªÌåÑéһϵÄС»ï°é£¬ÇëÏÂÔØ365betÌåÓýÔÚÏߵĴúÂë×ÔÐг¢ÊÔ»òÈ¥¹ÙÍøÌåÑé : P¡£ÏîÄ¿µØÖ·£ºhttps://github.com/LemonQH/SpeechSynthesis

    ÌØ±ðÌáʾ£º
    1¡¢ÔËÐÐdemoʱ£¬ÐèÒªÌæ»»synthesistool.pyÄ£¿éÖÐµÄ APP_KEY ¡¢ APP_SECRETΪÄã×Ô¼ºÉú³ÉµÄ APP_KEY¡¢APP_SECRETŶ
    2¡¢¸Ã¹¤³ÌĬÈÏ´æ·Å½á¹û´æÔÚ./result Îļþ¼ÐÏ£¬ÄãÐèÒªÊÖ¶¯ÔÚÏîĿ·¾¶Ï´´½¨¸ÃĿ¼¡£»òÕßÐÞ¸ÄΪÈ365betÌåÓýÔÚÏßâÄãÏë´æ·ÅµÄλÖÃ

×ܽá

ÒÔÉϾÍÊÇ365betÌåÓýÔÚÏߵĿª·¢¹ý³Ì£¬ÓеÀÖÇÔÆµÄÓïÒôºÏ³ÉAPIÎĵµÇåÎú£¬µ÷Óùý³ÌÈ«³ÌÎÞ¿Ó£¬¿ª·¢ÌåÑéºÍºÏ³ÉЧ¹û¶¼ÁîÈ˸е½ÊæÊÊ¡£

365betÌåÓýÔÚÏßÓйÊÊ£¬365betÌåÓýÔÚÏß°ÑËü½»¸ø»úÆ÷ÈËÀ´½²£¬±ÕÄ¿ÑøÉñ²»¿ÝÔï£¬ÕæÊÇÒ»¼þÃÀÊ£¡

posted @ 2020-10-17 10:59  Î޻ٵĺþ¹â-Al  ÔĶÁ(280)  ÆÀÂÛ(1±à¼­  ÊÕ²Ø