Hướng dẫn websocket audio streaming python - python phát trực tuyến âm thanh websocket

Gặp gỡ các luồng truyền thông

Với các luồng phương tiện của Twilio, bạn có thể truy cập dữ liệu thoại theo thời gian thực từ một cuộc gọi Twilio. Các luồng phương tiện sẽ truyền phát âm thanh từ cuộc gọi trong toàn bộ thời gian của nó đến một vị trí bạn chọn.

Trong hướng dẫn này, bạn sẽ học cách truyền phát âm thanh từ một cuộc gọi điện thoại trực tiếp bằng Twilio, Python và Flask. Bạn có thể muốn truyền phát âm thanh để cung cấp phân tích tình cảm thời gian thực cho tất cả các cuộc gọi xảy ra trong một trung tâm cuộc gọi. Mặc dù chúng tôi sẽ quay số một số cụ thể trong hướng dẫn này, bạn có thể tưởng tượng số này được điền linh hoạt từ phần mềm trung tâm cuộc gọi.

Bạn muốn xem toàn bộ phần bình của dự án này? Đi đến kho lưu trữ GitHub, nơi bạn có thể sao chép dự án và chạy nó tại địa phương.

WebSockets là gì?

Twilio Media Streams sử dụng websockets để cung cấp âm thanh của bạn.

Một WebSocket là một giao thức HTTP được nâng cấp. WebSockets được dự định sẽ được sử dụng cho các kết nối dài và lý tưởng cho các ứng dụng thời gian thực. Một cái bắt tay được thực hiện, một kết nối được tạo và, không giống như HTTP, nhiều tin nhắn dự kiến ​​sẽ được gửi qua ổ cắm cho đến khi nó được đóng. Điều này giúp loại bỏ sự cần thiết cho các ứng dụng bị thăm dò dài.expected to be sent over the socket until it is closed. This helps to remove the need for long-polling applications.

Giao diện WebSocket được bao gồm tự nhiên trong gần như tất cả các triển khai trình duyệt web phía máy khách.

Có rất nhiều triển khai máy chủ WebSocket có sẵn cho mọi khung web. Chúng tôi sẽ sử dụng các ổ đĩa để giúp chúng tôi vượt qua hướng dẫn này.

Thiết lập môi trường Python của bạn

Trong hướng dẫn này, chúng tôi sẽ sử dụng bình Web Framework và ổ cắm bình gói WebSocket. Tạo một môi trường ảo và cài đặt các cánh bình trong thiết bị đầu cuối của bạn:

python3 -m venv venv
source ./venv/bin/activate
pip install flask flask-sockets

Bây giờ gói đã được cài đặt, chúng ta có thể quay một máy chủ web Flask.

Xây dựng máy chủ WebSocket của bạn

Bộ trang trí sockets giúp bạn tạo một tuyến WebSocket với @socket.route.

Bạn đang xem một phiên bản lỗi thời của SDK này.

Điều này cho phép bạn trả lời các đường dẫn websocket được đặt tên (ví dụ: /phương tiện truyền thông)

Các ổ cắm bình dựa trên

0 cho đa luồng, vì vậy máy chủ này khởi động trông chi tiết hơn một chút so với thiết lập máy chủ Flask thông thường.

Bạn đang xem một phiên bản lỗi thời của SDK này.

Điều này cho phép bạn trả lời các đường dẫn websocket được đặt tên (ví dụ: /phương tiện truyền thông)

Bạn đang xem một phiên bản lỗi thời của SDK này.

Điều này cho phép bạn trả lời các đường dẫn websocket được đặt tên (ví dụ: /phương tiện truyền thông)

Các ổ cắm bình dựa trên

0 cho đa luồng, vì vậy máy chủ này khởi động trông chi tiết hơn một chút so với thiết lập máy chủ Flask thông thường.

Bạn đang xem một phiên bản lỗi thời của SDK này.

Điều này cho phép bạn trả lời các đường dẫn websocket được đặt tên (ví dụ: /phương tiện truyền thông)

Các ổ cắm bình dựa trên

0 cho đa luồng, vì vậy máy chủ này khởi động trông chi tiết hơn một chút so với thiết lập máy chủ Flask thông thường.

Một mẫu điển hình trong hầu hết các triển khai máy chủ WebSocket là tiếp tục đọc cho đến khi kết nối WebSocket đóng:

Tất cả các thông điệp được truyền qua các websockets Mediastreams đều ở định dạng JSON.

Bạn đang xem một phiên bản lỗi thời của SDK này.

Điều này cho phép bạn trả lời các đường dẫn websocket được đặt tên (ví dụ: /phương tiện truyền thông)

Bạn đang xem một phiên bản lỗi thời của SDK này.

Điều này cho phép bạn trả lời các đường dẫn websocket được đặt tên (ví dụ: /phương tiện truyền thông)

Các ổ cắm bình dựa trên

0 cho đa luồng, vì vậy máy chủ này khởi động trông chi tiết hơn một chút so với thiết lập máy chủ Flask thông thường.

Một mẫu điển hình trong hầu hết các triển khai máy chủ WebSocket là tiếp tục đọc cho đến khi kết nối WebSocket đóng:

Tất cả các thông điệp được truyền qua các websockets Mediastreams đều ở định dạng JSON.

Python cung cấp một cách đơn giản để giải mã JSON:

Có bốn loại tin nhắn khác nhau mà bạn sẽ gặp: - 1 - 2 - 3 - 4.

Thông báo bắt đầu sẽ chứa thông tin quan trọng về luồng, như loại âm thanh, tên của nó, cuộc gọi bắt nguồn và bất kỳ tham số tùy chỉnh nào khác mà bạn có thể đã gửi.

Thông tin này có thể sẽ có ích cho bất kỳ dịch vụ nào bạn dự định sử dụng với âm thanh thời gian thực của bạn.



    
        
     
     +15550123456

Bạn có thể xử lý từng loại bằng cách xem thuộc tính tin nhắn

5.

  1. Tải trọng phương tiện được mã hóa trong
    6. Sử dụng chức năng Python tích hợp 
    7 để giải mã nó thành 
    8.
  2. Khi mã của bạn được đặt đúng chỗ, hãy khởi động máy chủ bình bằng cách chạy lệnh này trong thiết bị đầu cuối của bạn:

Bây giờ máy chủ của bạn sẽ chạy trên Cổng Localhost 5000. Xin chúc mừng! Chỉ còn một việc phải làm ở đây: đảm bảo rằng Twilio có thể tiếp cận máy chủ web địa phương của bạn.

Lưu thùng Tiwml mới của bạn, sau đó kết nối nó lên một trong các số điện thoại đến của bạn bằng cách chọn Bin Twiml trong phần A trong phần và sau đó chọn thùng của bạn từ thả xuống. Bây giờ, khi một cuộc gọi đi vào số đó, Twilio sẽ truyền dữ liệu thời gian thực thẳng đến máy chủ web của bạn!TwiML Bin in the A Call Comes In section and then selecting your bin from the dropdown. Now, when a call comes into that number, Twilio will stream the real-time data straight to your webserver!

Theo mặc định, Twilio sẽ phát trực tuyến bản nhạc đến - trong trường hợp của chúng tôi, cuộc gọi điện thoại đến. Bạn luôn có thể thay đổi điều này bằng cách sử dụng thuộc tính

6.

Thử nó ra

Tìm một người bạn hoặc thành viên gia đình sẵn sàng giúp bạn kiểm tra máy chủ web phát trực tuyến của bạn (hoặc sử dụng điện thoại thứ hai khác với máy chủ bạn liệt kê trong thùng Twiml của bạn).

Một trong số các bạn nên gọi số điện thoại Twilio của bạn, sau đó sẽ kết nối cuộc gọi với số bạn đã chỉ định trong thùng Twiml của bạn. Hãy để mắt đến đầu ra bảng điều khiển của bạn và bắt đầu nói chuyện - bạn sẽ thấy cuộc trò chuyện của bạn xuất hiện trong bảng điều khiển khi bạn nói chuyện!

Cái gì tiếp theo?

Truy cập thời gian thực vào dữ liệu âm thanh của bạn mở ra những cánh cửa đổi mới mới cho bạn. Từ hiệu ứng hình ảnh thời gian thực đến tin sinh học, bạn chắc chắn sẽ được hưởng lợi từ việc truy cập dữ liệu trực tiếp này.

Có một số dịch vụ mà bạn có thể kết nối để cung cấp bài phát biểu trực tiếp với phiên âm văn bản. Bây giờ bạn có văn bản trong thời gian thực, bạn có thể thực hiện tất cả các loại hoạt động dựa trên văn bản như dịch thuật, phân tích tình cảm và phát hiện từ khóa.

Bạn có thể muốn chuyển dữ liệu thời gian thực của mình vào một số nhà cung cấp bên ngoài. Bạn có thể sử dụng bài phát biểu trên đám mây của Google để văn bản, phiên âm của Amazon hoặc bài phát biểu của IBM Watson sang văn bản. Tất cả các nhà cung cấp này có một dịch vụ dịch ngôn ngữ cũng có sẵn.

Cộng đồng của chúng tôi đã tạo ra một bộ khởi động cho nhiều ngôn ngữ và dịch vụ. Vui lòng kiểm tra nó để lấy cảm hứng trong việc xây dựng các ứng dụng thời gian thực của bạn và xem xét đóng góp.

Chúng tôi không thể chờ đợi để xem những gì bạn xây dựng!