이제 WAV 파일에서 직접 PCM 원시 바이트 배열을로드했습니다. 이제 원본 바이트 배열에 노이즈를 추가해야합니다. 내 요구 사항은 추가 된 노이즈에 대한 지식이 없으면 결과를 디코딩 할 수 없다는 것이고, 노이즈가 무엇인지 정확하게 알면 노이즈를 제거 할 수도 있습니다. 현재 아이디어는 원래의 바이트 배열을 짧은 배열로 변환하고, 2^-15와 2^15 사이의 무작위로 생성 된 숫자를 갖는 노이즈 짧은 배열을 생성하고이 2 개의 배열을 슬롯 단위로 추가합니다. 그러나이 방법은 원래 배열을 복구 할 수 있다고 보장 할 수 없습니다. 다른 사람이 나에게 더 나은 아이디어를 줄 수 있습니까? 미리 감사드립니다.PCM 원시 데이터에 노이즈를 추가하는 방법
답변
(사운드) 신호 S (t)가 있다고 가정합니다.
이 신호를 암호화하여 E (t)를 만들고 싶습니다.
Noise, N (t)를 추가하면됩니다.
S (t) + N (t) = E (t).
또한, E (t) -N (t) = S (t)이다.
이제 문제는 고유 한 '노이즈'를 생성합니다.
필자에게 시드 정보를받는 사람에게 전달할 수있는 의사 난수 생성기 (http://en.wikipedia.org/wiki/Pseudorandom_number_generator)를 통해이 작업을 수행합니다. 이제
, 같은 씨앗을 가지고 아무도 =의 S (t) 의견에
응답 N (t)는 E (t) -N (t)를 계산 할 수 있습니다 만들 수 있습니다 :
@ Bjorn : 일반적인 의미의 암호화가 아닙니다. 하지만 정수 C mod [0 - 2^16-1]가 있다고 가정합니다. 이제 같은 범위 [0-2^16-1]에 균일 한 임의의 정수를 더합니다. 결과는이 범위의 균일 한 무작위 정수이기도합니다. 따라서 임의 시퀀스 생성기의 품질에 따라 디코딩 할 수없는 신호를 만들 수 있습니다 (원래 중첩 신호가없는 경우 제외). (나는 인정할 것이다, 이것은 오버플로 없이는 그렇지 않을 것이다).
@OP : 전달 된 후 번호가 디코딩됩니다.
이진 문자열이 10101010이라고 가정합니다. 이제 11110000을이 문자열에 추가합니다. 결과는 01011010과 비슷해야합니다. 오버플로가 2^8에 위치합니다.
이제 01011010-11110000 반환 같은 초기 값 : 10101010 그래서이 오버 플로우가 실제로
이 * 이것은 당신이 다시 생성 할 수있는 고유 마스킹 신호를 사용하여 제공되는 원래의 신호를 마스킹에 지원 역할 받는 사람.
잡음은 정의상 신호의 (준) 임의 잡음입니다. 원래 신호를 완전히 복구 할 수는 없으며, 예를 들어 노이즈의 스펙트럼을 알고있는 경우에만 원래 신호를 억제하십시오.
- 1. 데이터에 임의의 일정한 노이즈를 추가하는 방법은 무엇입니까?
- 2. Java에서 pcm 원시 데이터 재생 방법
- 3. FFT - PCM 데이터에 창 적용
- 4. 모노 터치에서 uiimage에 노이즈를 추가하는 방법
- 5. 원시 연락처 데이터에 액세스
- 6. PCM 16 비트 웨이브에서 노이즈를 필터링하기위한 최상의 알고리즘은 무엇입니까?
- 7. 원시 pcm 데이터의 사운드 레벨을 감지합니다.
- 8. 오디오를 [Double] 유형의 원시 PCM 데이터로 변환
- 9. 원시 PCM 데이터의 올바른 디코딩/인코딩
- 10. PCM 원시 데이터를 사용자 공간에 넣으십시오.
- 11. 핑크 노이즈를 시뮬레이트하는 방법
- 12. 이미지에서 노이즈를 줄이는 방법
- 13. 원시 데이터에 대한 포인터 연산
- 14. PCM/안드로이드
- 15. 안드로이드의 pcm 데이터를받는 방법?
- 16. Django 데이터베이스 - 원시 SQL에이 열을 추가하는 방법
- 17. @foreach를 Laravel의 SQL 원시 문장에 추가하는 방법
- 18. 데이터에 데이터를 추가하는 코퍼스
- 19. 데이터에 따라 동적으로 UI 요소를 추가하는 방법
- 20. XML 데이터에 새 요소를 추가하는 방법
- 21. SQL 출력 데이터에 괄호를 추가하는 방법
- 22. 코어 데이터에 그룹별로 복수 속성을 추가하는 방법
- 23. QtMultimedia를 사용하여 MP3 파일에서 원시 PCM 샘플 읽기?
- 24. 플래시를 사용하여 라이브 소켓 스트림의 PCM 원시 데이터 재생
- 25. ffmpeg native AAC를 사용하여 원시 PCM 인코딩 aac
- 26. C#으로 순수 PCM 원시 스트림을 재생하는 방법은 무엇입니까?
- 27. Android SDK를 사용하여 원시 PCM 데이터에서 WAV 파일 만들기
- 28. 코덱에서 덤프 한 원시 PCM 파일을 어떻게 재생할 수 있습니까?
- 29. 특정 분산을 사용하여 노이즈를 생성하는 방법
- 30. pcm 데이터에 FFT 적용 및 스펙트로 그램으로 변환
몇 가지 : 1. 소리가 실제로 암호화되지 않습니다 (단어의 의미에서). 한 가지는 원래 사운드가 무엇인지 확인할 수 있습니다. 2. 오디오 포맷에 대해 생각할 필요가 있습니다. OP는 바이트에서 단락으로 변환 할 것을 제안합니다. 이것은 WAV 파일이 16 비트이고 단락이 플랫폼 (일반적으로는)에있는 경우 16 비트입니다. –
@Bjorn 문제는 : 짧은 값에 임의의 값을 추가하면 결과가 2^15-1 인 short의 최대 값보다 클 수 있습니다.이 경우 원래 값을 다시 얻지 못할 수 있습니다. –
멋진 작품, thx 젠체하는 사람 –