| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
- import pyaudio
 
 - import dashscope
 
 - from dashscope.audio.tts_v2 import *
 
  
 
- from http import HTTPStatus
 
 - from dashscope import Generation
 
  
- dashscope.api_key = "sk-f17bec7f461cba"
 
 - model = "cosyvoice-v1"
 
 - voice = "longxiaochun"
 
  
 
- class Callback(ResultCallback):
 
 -     _player = None
 
 -     _stream = None
 
  
-     def on_open(self):
 
 -         print("websocket is open.")
 
 -         self._player = pyaudio.PyAudio()
 
 -         self._stream = self._player.open(
 
 -             format=pyaudio.paInt16, channels=1, rate=22050, output=True
 
 -         )
 
  
-     def on_complete(self):
 
 -         print("speech synthesis task complete successfully.")
 
  
-     def on_error(self, message: str):
 
 -         print(f"speech synthesis task failed, {message}")
 
  
-     def on_close(self):
 
 -         print("websocket is closed.")
 
 -         # stop player
 
 -         self._stream.stop_stream()
 
 -         self._stream.close()
 
 -         self._player.terminate()
 
  
-     def on_event(self, message):
 
 -         print(f"recv speech synthsis message {message}")
 
  
-     def on_data(self, data: bytes) -> None:
 
 -         print("audio result length:", len(data))
 
 -         self._stream.write(data)
 
  
 
- def synthesizer_with_llm(text):
 
 -     callback = Callback()
 
 -     synthesizer = SpeechSynthesizer(
 
 -         model=model,
 
 -         voice=voice,
 
 -         format=AudioFormat.PCM_22050HZ_MONO_16BIT,
 
 -         callback=callback,
 
 -     )
 
  
-     messages = [{"role": "user", "content": f"""请朗读这些句子,跟原文保持绝对一致,不要添加任何评论,翻译。:{text}""" }]
 
 -                  
 
 -                  
 
 -     responses = Generation.call(
 
 -         model="qwen-turbo",
 
 -         messages=messages,
 
 -         result_format="message",  # set result format as 'message'
 
 -         stream=True,  # enable stream output
 
 -         incremental_output=True,  # enable incremental output 
 
 -     )
 
 -     for response in responses:
 
 -         if response.status_code == HTTPStatus.OK:
 
 -             print(response.output.choices[0]["message"]["content"], end="")
 
 -             synthesizer.streaming_call(response.output.choices[0]["message"]["content"])
 
 -         else:
 
 -             print(
 
 -                 "Request id: %s, Status code: %s, error code: %s, error message: %s"
 
 -                 % (
 
 -                     response.request_id,
 
 -                     response.status_code,
 
 -                     response.code,
 
 -                     response.message,
 
 -                 )
 
 -             )
 
 -     synthesizer.streaming_complete()
 
 -     # print('requestId: ', synthesizer.get_last_request_id())
 
  
 
- if __name__ == "__main__":
 
 -     text1 = """
 
  
- 该女子向民警提供了相关违法行为的图片,图片显示,驾驶员正驾车行驶在
 
 - 高速公路第二车道上,
 
  
-                  
 
 -             """
 
 -     synthesizer_with_llm(text1)
 
  复制代码 |   
 
 
 
 |