| | |
| | | import asyncio |
| | | from queue import Queue |
| | | # import threading |
| | | import argparse |
| | | |
| | | parser = argparse.ArgumentParser() |
| | | parser.add_argument("--host", |
| | | type=str, |
| | | default="localhost", |
| | | required=False, |
| | | help="host ip, localhost, 0.0.0.0") |
| | | parser.add_argument("--port", |
| | | type=int, |
| | | default=10095, |
| | | required=False, |
| | | help="grpc server port") |
| | | parser.add_argument("--chunk_size", |
| | | type=int, |
| | | default=300, |
| | | help="ms") |
| | | |
| | | args = parser.parse_args() |
| | | |
| | | voices = Queue() |
| | | async def hello(): |
| | | async def ws_client(): |
| | | global ws # 定义一个全局变量ws,用于保存websocket连接对象 |
| | | uri = "ws://localhost:8899" |
| | | # uri = "ws://11.167.134.197:8899" |
| | | uri = "ws://{}:{}".format(args.host, args.port) |
| | | ws = await websockets.connect(uri, subprotocols=["binary"]) # 创建一个长连接 |
| | | ws.max_size = 1024 * 1024 * 20 |
| | | print("connected ws server") |
| | | |
| | | async def send(data): |
| | | global ws # 引用全局变量ws |
| | | try: |
| | |
| | | |
| | | |
| | | |
| | | asyncio.get_event_loop().run_until_complete(hello()) # 启动协程 |
| | | asyncio.get_event_loop().run_until_complete(ws_client()) # 启动协程 |
| | | |
| | | |
| | | # 其他函数可以通过调用send(data)来发送数据,例如: |
| | |
| | | FORMAT = pyaudio.paInt16 |
| | | CHANNELS = 1 |
| | | RATE = 16000 |
| | | CHUNK = int(RATE / 1000 * 300) |
| | | CHUNK = int(RATE / 1000 * args.chunk_size) |
| | | |
| | | p = pyaudio.PyAudio() |
| | | |
| | |
| | | |
| | | await asyncio.gather(task, task2) |
| | | |
| | | asyncio.run(main()) |
| | | asyncio.run(main()) |