2012-12-09 59 views
9

Có thể bắt dòng âm thanh bằng giọng nói bằng java (JME hoặc Android), tùy chỉnh mã hóa và sau đó gửi nó dưới dạng luồng thông thường qua cuộc gọi GSM thông thường không? Và tắt mật mã giải mã khóa học trên điện thoại khác. Là cấp độ ứng dụng java được phép chặn luồng âm thanh hoặc nó bị tắt ở cấp phần cứng?Tùy chỉnh mã hóa cuộc gọi GSM

Đã có ứng dụng thực hiện điều đó chưa?

+2

Tôi nghĩ rằng điều này chỉ có thể với việc root thiết bị của bạn. – rekire

+2

root hoặc trick :) –

Trả lời

4

Mạng di động thực hiện chuyển mã tổn hao trên các kênh truyền hình bằng giọng nói, ví dụ với

  • "Gốc" mã hóa/giải mã
  • Canceler tiếng vang,
  • máy phát tiếng ồn hoặc
  • thay đổi codec.

Vì vậy, tôi nghi ngờ rằng luồng dữ liệu thoại được mã hóa tồn tại truyền qua mạng di động theo cách cho phép giải mã ở phía bên nhận.

Tương tự đơn giản: âm thanh -> mã hóa -> Nén MP3 -> Giải mã MP3 -> giải mã -> âm thanh. Điều này có thể không hoạt động. Hoặc: nếu bạn thực hiện công việc này thì bạn có cơ hội vận chuyển luồng được mã hóa thông qua một trình thu thập giọng nói.

Tùy chọn của bạn sẽ là thực hiện điều đó trên trình mang dữ liệu, chuyển giọng nói được mã hóa qua IP. Nhưng điều này đòi hỏi một ứng dụng điện thoại riêng biệt trên các thiết bị di động.

+0

Tôi không nghĩ rằng ví dụ mp3 có liên quan ở đây. mp3 là tín hiệu nén cụ thể. Trong GSM ** đã có mã hóa ** và nén (A51 nếu tôi nhớ) vì vậy với GSM tương tự mp3 của bạn sẽ là không thể. Tôi có thể sử dụng thuật toán SAME mà GSM sử dụng, chỉ với khóa MY. ** Câu hỏi chính là tôi có giao diện/setStream() cho kênh GSM qua JME/Android. ** –

+1

GSM cũng thực hiện nén tín hiệu cụ thể, đó là toàn bộ điểm trong ví dụ MP3 của tôi. Việc truyền tải MP3 nén qua giọng nói GSM sẽ không hoạt động. Bạn không thể sử dụng algortihm GSM với khóa của riêng bạn vì mạng GSM giải mã trong BSC, tức là đây không phải là mã hóa đầu cuối. Bạn sẽ cần phải làm cho mạng nhận thức được chìa khóa của bạn. Ngay cả khi bạn sẽ nhận được/setStream(), dữ liệu bạn đưa vào đây phải có các thuộc tính âm thanh, nghĩa là chúng phải hoạt động với các codec GSM. Âm thanh được mã hóa có khả năng sẽ * không * hoạt động. – Bernd

+0

_Bạn không thể sử dụng algortihm GSM với khóa của riêng bạn vì mạng GSM giải mã trong BSC, đây không phải là mã hóa đầu cuối._ Vì vậy, giải mã sẽ không thành công, nhưng điều đó chỉ có nghĩa là gọi đến điện thoại cố định sẽ không hoạt động, nhưng với điện thoại di động khác giải mã nó, nó nên. _Even nếu bạn sẽ có được/setStream(), dữ liệu bạn tiêm ở đây phải có các thuộc tính âm thanh, tức là chúng phải làm việc với bộ mã hóa GSM codecs._ getStream() nên trả về byte [] và setStream (byte [] stream) luồng nhị phân cho đối số, do đó luồng nhị phân là luồng nhị phân, nó không liên quan gì với miền tương tự. –

5

Như đã nêu ở trên, bạn chỉ có thể nhận được mức truy cập vào cuộc gọi thoại với điện thoại bắt nguồn và thậm chí sau đó là thiết bị cụ thể. Tốt nhất bạn có thể làm cho một ứng dụng thoại được mã hóa chung là ứng dụng kiểu VOIP/SIP sẽ sử dụng kết nối dữ liệu.

Thậm chí nếu bạn có thể thực hiện việc mã hóa qua cuộc gọi tương tự sẽ không nhỏ. Nén được sử dụng trong các codec GSM được tối ưu hóa cho giọng nói và đưa ra các giả định nhất định về các đặc tính của tín hiệu. Bạn không thể chỉ sử dụng analog đơn giản -> kỹ thuật số -> mã hóa -> analog -> mạng điện thoại -> analog -> kỹ thuật số -> giải mã -> chuỗi tín hiệu tương tự.

Bạn có thể nhận thấy tôi đã bao gồm tương tự như một bước, vì tất cả mã hóa kỹ thuật số cuối cùng vào mạng GSM được thực hiện bởi chipset radio GSM mà bạn không truy cập được từ bất kỳ điện thoại nào ngay cả khi bắt nguồn từ.

+0

Vì vậy, không có giao diện getAudioStream() và setAudioStream() cho kênh GSM? (JME/Android) –

+1

Không, mặc dù chúng về mặt kỹ thuật có thể được hiển thị như được hỗ trợ bởi hệ thống phân cấp lớp (không chắc chắn) Tôi tin rằng chúng sẽ không thực sự hoạt động trên hầu hết mọi điện thoại. – PeterJ

0

Tôi biết có những ứng dụng hoạt động như trình thay đổi giọng nói, nơi chúng thay đổi giọng nói của bạn và truyền giọng nói qua giọng nói qua gsm. Có lẽ bạn có thể tạo ra một ứng dụng lấy giọng nói sau đó điều chỉnh nó thành một cái gì đó như dịch phase hoặc digital radio monodiale giống như ham được sử dụng trong truyền thông vô tuyến vhf và hf và truyền âm thanh tới gsm sau đó giải điều đó trở lại giọng nói nhưng thay vì thẳng về phía trước điều chế giải điều chế bạn có thể thêm pgp, aes hoặc bất kỳ mã hóa nào bạn muốn. Tôi cũng bắt đầu thấy một dự án như thế này.

Tôi nghĩ rằng nó cũng sẽ tuyệt vời nếu bạn có thể sử dụng điều này để truyền dữ liệu qua kênh thoại GSM như modem 56k trong quá khứ thay vì kênh gprs.

Xem tham khảo

http://freedv.org/tiki-index.php 

http://www.aprs.org 
2

GSM full rate bài phát biểu giải mã hoạt động tại 13 kbits/s và sử dụng một Excited (RPE) bộ giải mã xung thường - Điều này có nghĩa rằng các micro và bài phát biểu phát hiện trong GSM được tối ưu hóa để truyền trên một kênh 'kênh kỹ thuật số' được ghép kênh phân chia theo thời gian, sau đó được điều chế trên giao diện không khí bằng cách sử dụng GMSK, một sơ đồ điều chế biến đổi tần số pha liên tục.

Các tiếng ồn khác với mẫu giọng nói 'trung bình' bị bóp méo nhiều (hoặc bị chặn) - Ví dụ DTMF (âm) không nhận được trên thiết bị và phải được truyền qua lõi mạng, nhưng âm được thiết kế cho phiên điều trần làm việc kém hiệu quả. Giọng nói được định hình (được lọc) khi nhập vào bộ giải mã (thiết kế micrô) để phát hiện và sao chép codec tốt nhất ở đầu kia.

Tóm lại - Không thể điều chỉnh lại 'qua hệ thống GSM, vì điểm vào không phải là đài (giao diện không dây), hoặc thậm chí truy cập vào khung kỹ thuật số GSM. Quyền truy cập duy nhất của bạn cho cuộc gọi thoại là bộ giải mã GSM đang mong đợi một giọng nói trong một phổ âm thanh hạn chế.

Tuy nhiên - Nếu bạn có thể tạo một giọng nói như dạng sóng cho các codec GSM, sau đó bạn có thể có một con đường phía trước

Các vấn đề liên quan